Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2009, 17:56   #1
Nina+
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 39
По умолчанию Задача на массивы С/C++

Определить, в тексте больше слов четной или нечётной длины.

Помогите пожалуйста, у меня почему-то не работает... В чём ошибка?

Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
main(){
 clrscr();
 char a[100][255];
 int sch;
 int snch;
 int i,j,k;
 char b[255];
 printf("Vvedite text\n");
 i=0;
 while(a[i-1][0]!='.'){
  gets(a[i]);
  i++;
  }
 i=0;
 while(a[i-1][0]!='.'){
  j=0;
  while(a[i][j]!='\n'){
   k=0;
   while(a[i][j]!=' '){
   b[k]=a[i][j];
   k++;
   j++;
   }
   if(strlen(b)%2==0) sch=sch+1;
    else snch=snch+1;
   while(a[i][j]=' ') j++;}
   i++;
   }
   printf("nech=%d\n",snch);
   printf("chet=%d\n",sch);
   return 1;
   }
Nina+ вне форума Ответить с цитированием
Старый 12.03.2009, 18:32   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

У вас везде выходы индексов за пределы. Например:
Код:
 i=0;
 while(a[i-1][0]!='.'){
Элемента i-1 еще нет.
Там есть и другие ошибки, но имхо проще переписать эту часть:

Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main(){

 char a[100][255];
 int sch;
 int snch;
 int i,j,k,l;
 char b[255];
 printf("Vvedite text\n");
 i=0;
 do {
  gets(a[i]);
  } while(a[i++][0]!='.');

 l=i-1;
 for(i=0;i<l;i++)
  {
   j=0;
   while(j<strlen(a[i]))
    {
     while(a[i][j]==' '&& j<strlen(a[i]))
      j++;
     strcpy(b,"");
     k = 0;
     while(a[i][j]!=' '&&j<strlen(a[i]))
      {
       b[k++] = a[i][j++];
      }
     b[k] = 0;
    if(strlen(b)%2==0) sch=sch+1;
    else snch=snch+1;
     j++;
    }

  } //for i


   printf("nech=%d\n",snch);
   printf("chet=%d\n",sch);
   getch();
   return 0;
   }
Пример ввода:
Код:
Vvedite text
df dfasd df df df
sdf
.
nech=2
chet=4
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 12.03.2009, 19:41   #3
Nina+
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 39
По умолчанию

спасиб, но что-то видимо не так... результаты очень большие получаются... ???
Nina+ вне форума Ответить с цитированием
Старый 12.03.2009, 19:45   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
результаты очень большие получаются.
А вы напишите, что вводите.
У меня все правильно считает.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 12.03.2009, 19:53   #5
Nina+
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 39
По умолчанию

fdghj dfghjk sd
fghjkl
.

Вроде всё так...
Nina+ вне форума Ответить с цитированием
Старый 12.03.2009, 20:02   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Nina+
Цитата:
Вроде всё так...
Так у вас работает, или нет?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 12.03.2009, 20:05   #7
Nina+
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 39
По умолчанию

Нет, не работает
Nina+ вне форума Ответить с цитированием
Старый 12.03.2009, 20:11   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Нет, не работает
Так а что не работает?
Приложите скрин, или скопируйте из консоли, или просто перепишите все, что у вас выводится.
Слова "не работает" мне ничего не говорят.

Код:
Vvedite text
fdghj dfghjk ds
fghjkl
.
nech=1
chet=3
Все верно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 12.03.2009, 20:27   #9
Nina+
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 39
По умолчанию

---------------------
Изображения
Тип файла: jpg 1.jpg (8.5 Кб, 141 просмотров)
Nina+ вне форума Ответить с цитированием
Старый 12.03.2009, 20:34   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Nina+, Это глюк компилятора.
Честно говоря, пока не приходит в голову, что там не так и что можно сделать, чтобы заработало на BC.
С этим компилятором всегда какие-то проблемы. Он уже устарел.
Изображения
Тип файла: jpg scr3.jpg (12.7 Кб, 140 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы на C++задача Wia Помощь студентам 1 20.12.2008 01:08
Массивы на C++задача Wia Помощь студентам 1 19.12.2008 00:20