Войти

Показать полную графическую версию : [решено] Помогите решить задачу по С++


Страниц : 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16

Drongo
27-11-2010, 16:09
У меня же нужен динамический массив,а я использую указатели,что делать? »Не понял вашего вопроса. Перефразируйте его.
Если этомне бы надо постоянные массивы »то убрать создание динамических массивов и запрос ввода размера n и m.

Andir
29-11-2010, 13:26
#include <iostream>

using namespace std;
int main(){
int n;
int g=0;
char asd[10000][10000];
cin>>n;
for (int i=0; i<n; i++){
for (int j=0; j<n; j++){
cin>>asd[i][j];
}
}
for (int i=0; i<n; i++){
for (int j=0; j<n; j++){
if ((i+j)%2==0)
if (asd[i][j]<asd[i+1][j] && asd[i-1][j]<asd[i][j+1] && asd[i][j]<asd[i][j-1]
&& asd[i][j]<asd[i+1][j+1] && asd[i][j]<asd[i-1][j-1] && asd[i][j]<asd[i+1][j-1]
&& asd[i][j]<asd[i-1][j+1] && asd[i][j]<asd[i+1][j])
g++;
else if ((i+j)%2==1)
if (asd[i][j]<asd[i-1][j] && asd[i][j]<asd[i-1][j+1] && asd[i][j]<asd[i+1][j] && asd[i][j]<asd[i+1][j+1] && asd[i][j]<asd[i][j+1])
g++;
else if ((i+j==n-1 || i+j==0))
if (asd[i][j]<asd[i-1][j] && asd[i][j]<asd[i-1][j+1] && asd[i][j]<asd[i][j+1])
g++;


}
}
cout<<g;


return 0;
}

DennyD
30-11-2010, 21:07
Вводится последовательность слов различной длины(не более 10 символов).Слова разделены пробелом.В конце последовательности стоит символ "точка".Необходимо составить структурированную программу для печати слов в 2 стлбца так чтобы в левом столбце печатались слова длиной<=5 символов а в правом больше 5.Помогите пожалуйста((

//по идее нужно объявить 2 массива,чтобы один заполнялся словами меньше 5 а другой больше 5...правда сложновато как то((

Drongo
01-12-2010, 00:44
DennyD, Сначала вам нужно предложение разбить на лексемы(на отдельные слова) и поместить все слова в массив(WordArray), дальше проходя по этому массиву в цикле проверять функцией strlen длину слова и если меньше или равно пяти помещать в массив WordMinimum иначе в WordMaximum

DennyD
01-12-2010, 10:14
То есть идя по первоначальной строке натыкаясь на символ пробел добавляем слово в массив(word array)?

DennyD
01-12-2010, 11:07
можно поподробнее пожалуйста

Сначала вам нужно предложение разбить на лексемы(на отдельные слова) и поместить все слова в массив(WordArray) »

Drongo
01-12-2010, 16:57
DennyD, Ммм... К сожалению я не умею динамически создавать массив указателей на char. :( Смог сделать разбивку предложений по словам

#include <iostream>
using namespace std;
#include <cstring>

const int size = 510;
const int sizeLeksem = 250; // размер массива лексем

int main()
{
char tekst[size];
const char *leksem[sizeLeksem]; // массив указателей на лексемы
char *tokenPtr; // переменная-указатель на лексемы
int index,
min = 0,
max = 0,
counterLeksem = 0; // счётчик обработаных лексем в массиве указателей "*leksem"

cout<<" ENTER TEKST NE BOLSHE 510 SIMVOLOV\n";
cin.getline(tekst, size, '\n');

// Разбиваем полученый текст на слова и помещаем каждое слово в массив "leksem"
tokenPtr = strtok(tekst, " "); // найти первую лексему
leksem[counterLeksem] = tokenPtr; // присвоить первую лексему массиву указателей
while(tokenPtr != NULL){ // пока указатель на лексему не равен NULL, продолжать
leksem[counterLeksem] = tokenPtr; // присвоить следующую лексему массиву указателей
if(strlen(tokenPtr) <= 5) // Сколько найденых слов с буквами меньше 5
min++;
else // Сколько найденых слов с буквами больше 5
max++;
++counterLeksem; // перейти к следующему индексу массива
tokenPtr = strtok(NULL, " "); // нахождение следующей лексемы
}

// Динамически создаём массив указателей на char
// Раскидываем слова меньше пяти букву и больше пяти букв
// По своим массивам.
// вот тут у меня загвозка, не могу создать массив указателей
char *wordMin = new char[min];
char *wordMax = new char[max];

min = 0;
max = 0;

for(int i = 0; i < counterLeksem; i++){
if(strlen(leksem[i]) <= 5)
wordMin[min++] = leksem[i];
else
wordMax[max++] = leksem[i];
}

for(int j = 0; j < min; j++)
cout<<"Word Minimum 5 = "<<wordMin[j]<<endl;

for(int a = 0; a < max; a++)
cout<<"Word Maximum 5 = "<<wordMin[a]<<endl;

cin>>min;

return 0;
}

DennyD
02-12-2010, 22:46
по идее легче делается возможно даже без указателей,подойду к преподу завтра может че подскажет дельное,ну спасибо во всяком случае))

Вот еще задачка не знаю как сделать((

задана некоторая запись длиной N в которой подряд несколько одинаковых символов.Составить программу вывода расположеных подряд символов и их колличества,т.е. ожидаемый результат:
ВВод:ааььттти
Вывод:а-2
ь-2
т-3

lxa85
03-12-2010, 09:33
DennyD, просматривать строку, попутно считая кол-во повторов символа. Как только перестал повторяться, делаем соотв. вывод.

DennyD
05-12-2010, 15:45
задана некоторая запись длиной N в которой подряд несколько одинаковых символов.Составить программу вывода расположеных подряд символов и их колличества.
Вот моя программа:
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#define n 80
void main()
{
char S[n];
int i,k;
gets(S);
for (i=0;i<strlen(S)-1;i++)
if (S[i]==S[i+1])
{
k=1;
k=k+1;
cout<<S[i]<<"-"<<k<<"\n";
}
k=0;
getch();
}



что надо исправить чтобы считала более 2х символов расположеных подряд?
То есть при вводе "аассс" мне выдается результат а-2,с-2,с-2.

artiomdark
06-12-2010, 18:24
1)Дана строка символов найти количество пробелов
2)Дан двухмерный массив найти количество нулей

Hector
06-12-2010, 18:35
Дана строка символов найти количество пробелов »
и в чем тут проблема?

artiomdark
06-12-2010, 18:37
Проблема в том что я не могу это сделать...!!!

artiomdark
06-12-2010, 18:53
Помоги чем сможешь завтра контрольный тест а я в Borland ++ нечего не знаю...!!

ganselo
06-12-2010, 21:01
1)Дана строка символов найти количество пробелов »

#include <stdio.h>
#include <string.h>

int main()
{
char str[1024];
int count = 0;

gets(str);
for(int i = 0; i < strlen(str); i++) {
if(if(str[i] == ' ') count++;
}
printf("count = %i", count);
}

2)Дан двухмерный массив найти количество нулей »

#include <stdio.h>
#include <string.h>

int main()
{
int A[10][10];
int count = 0;
srand(time(NULL));
for(int i = 0; i < 10; i++)
for(int j = 0; j < 10; j++)
A[i][j] = rand()%2;
for(int i = 0; i < 10; i++)
for(int j = 0; j < 10; j++)
if(A[i][j] == 0) count++;

for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
printf("%i ", A[i][j]);
printf("\r\n");
}
}


завтра контрольный тест а я в Borland ++ нечего не знаю...! »
просьбой решить за тебя ты себе не поможешь.

DennyD
08-12-2010, 12:06
помогите пожалуйста написать функцию вычисляющую моду ряда(наиболее часто встречающийся элемент)

lxa85
08-12-2010, 13:57
DennyD, что за ряд? Что является элементом ряда? Сколько видов элементов ряда (перечисляемые ли они)?

DennyD
08-12-2010, 15:05
ну ряд это одномерный статический массив вещественных чисел

DennyD
08-12-2010, 18:23
все уже сам допер))


int fmo(int x[n])
{
for (i=0;i<n;i++)
{
for (j=1;j<n;j++)
{
if (x[i]==x[j])
k++;
}
if (k>max)
{max=k;
mod=x[i];}
k=0;
}
return mod;
}

ValeraRU
11-12-2010, 21:18
Ребята помогите написать программу в турбо 3,0
Задание:
Вариант 5
Дана целочисленная квадратная матрица(есть у меня значения этой матрицы). Определить:
сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.

и нр2
Задание:
1. Описать структуру с именем АЕRОLOT, содержащую следующие поля:
· NAZN - название пункта назначения рейса;
· NUMR - номер рейса;
· ТIР - тип самолета.
2. Написать программу, выполняющую следующие действия:
· ввод с клавиатуры данных в массив АIРОRТ, состоящий из семи элемен*тов типа АЕRОFLОТ; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;
· вывод на экран пунктов назначения и номеров рейсов, обслуживаемых са*молетом, тип которого введен с клавиатуры;
· если таких рейсов нет, выдать на дисплей соответствующее сообщение.



PS и еще нужно ввод из файла сделать,помогите,заранее благодарю !:)




© OSzone.net 2001-2012