вопрос гуру от мягко говоря не гуру

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Ama
Сообщения: 1
Зарегистрирован: 17 янв 2005, 21:31

Где у меня ошибка? Считаю четные слова в таблице с текстом А [3][50], например. Уже извелась вся...
#include<stdio.h>
#include<iostream.h>

void main(void)

{
char a[3][50];
int i,j,c,word_even,word,somme;

for(i=0;i<3;i++)

gets(a);

cout<<"\n"<<"voila votre texte :"<<"\n";

for(i=0;i<3;i++)

puts(a);

for(i=0;i<3;i++)
{
for (j=0, c=0; (a[j] != '\0') && (j < 50); j++)

{
if(a[j]!=','&&a[j]!='.'&&a[j]!=':'&&a[j]!='?'&&a[j]!='!'&&a[j]!='-'&&a[j]!=' ')

c++;
}

cout<<c<<"\n";

}

i=0;

word=0;

word_even=0;

somme=0;

while(i<3)

{
j=0;

while(j<50&&j!='\0')
{
if(a[i][j]!=','&&a[i][j]!='.'&&a[i][j]!=':'&&a[i][j]!='?'&&a[i][j]!='!'&&a[i][j]!='-'&&a[i][j]!=' ')
{

somme++;


}


else

{
word++;

if(somme%2==0)
{
word_even++;
}

}

j++;


}

i++;

}

cout<<"le nombre total des mots : "<<word<<"\n";

cout<<"le nombe total des mots pairs : "<<word_even;

cout<<"\n"<<"au revoire... :) ";

}
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

while(j<50&&j!='\0')
{
может стоит заменить на
while(j<50&&a[j]!='\0')
{


somme=0;

while(i<3)


я бы поменял местами - все-таки количество букв для слова стоит считать отдельно каждый раз для каждого слова

(a[j] != '\0') && (j < 50);

стоит наверно заменить на j<strlen(a);

плюс необработана ситуация последнего слова то есть проверка не учитывает тот факт что после слова НЕТ НИКАКОГО РАЗДЕЛИТЕЛЯ

вот.

мот все-таки стоит сесть с бумажкой и внимательно нарисовать все случаи ;)
а заодно как должны обрабатываться данные.

PS - изводиться тем более из-за проги не стоит ;)
В SAD - все в SAD.
Ответить