Показать полную графическую версию : [решено] Помогите решить задачу по С++
Страниц :
1
2
3
4
5
6
7
8
[
9]
10
11
12
13
14
15
16
У меня же нужен динамический массив,а я использую указатели,что делать? »Не понял вашего вопроса. Перефразируйте его.
Если этомне бы надо постоянные массивы »то убрать создание динамических массивов и запрос ввода размера n и m.
#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;
}
Вводится последовательность слов различной длины(не более 10 символов).Слова разделены пробелом.В конце последовательности стоит символ "точка".Необходимо составить структурированную программу для печати слов в 2 стлбца так чтобы в левом столбце печатались слова длиной<=5 символов а в правом больше 5.Помогите пожалуйста((
//по идее нужно объявить 2 массива,чтобы один заполнялся словами меньше 5 а другой больше 5...правда сложновато как то((
DennyD, Сначала вам нужно предложение разбить на лексемы(на отдельные слова) и поместить все слова в массив(WordArray), дальше проходя по этому массиву в цикле проверять функцией strlen длину слова и если меньше или равно пяти помещать в массив WordMinimum иначе в WordMaximum
То есть идя по первоначальной строке натыкаясь на символ пробел добавляем слово в массив(word array)?
можно поподробнее пожалуйста
Сначала вам нужно предложение разбить на лексемы(на отдельные слова) и поместить все слова в массив(WordArray) »
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;
}
по идее легче делается возможно даже без указателей,подойду к преподу завтра может че подскажет дельное,ну спасибо во всяком случае))
Вот еще задачка не знаю как сделать((
задана некоторая запись длиной N в которой подряд несколько одинаковых символов.Составить программу вывода расположеных подряд символов и их колличества,т.е. ожидаемый результат:
ВВод:ааььттти
Вывод:а-2
ь-2
т-3
DennyD, просматривать строку, попутно считая кол-во повторов символа. Как только перестал повторяться, делаем соотв. вывод.
задана некоторая запись длиной 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)Дан двухмерный массив найти количество нулей
Дана строка символов найти количество пробелов »
и в чем тут проблема?
artiomdark
06-12-2010, 18:37
Проблема в том что я не могу это сделать...!!!
artiomdark
06-12-2010, 18:53
Помоги чем сможешь завтра контрольный тест а я в Borland ++ нечего не знаю...!!
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, что за ряд? Что является элементом ряда? Сколько видов элементов ряда (перечисляемые ли они)?
ну ряд это одномерный статический массив вещественных чисел
все уже сам допер))
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.