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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2009, 02:35   #1
vitaliy1392
Новичок
Джуниор
 
Регистрация: 15.12.2009
Сообщений: 2
По умолчанию Программа про строки в стиле C; помогите найти ошибку...

Всем привет!
Дан текст, программа должна определить количество слов, у которых первый и последний символы совпадают.
Вот, что получилось у меня.
Код:
#include <iostream.h>
#include <stdio.h>
#include <string.h>
int main()
{
int i,s;
char text[256];
char begin,end;
cout<<"Введите текст\n";
gets(text);
s=0;
for(i=0;i<256;i++){
if(text[i-1]==' '|| i==0)
begin=text[i];
if(text[i+1]==' ')
end=text[i];
if(begin==end)
s++;
}
cout<<s;
return 0;
}
Ошибок синтаксиса нет, но работает не правильно. Прошу помочь найти ошибки.
vitaliy1392 вне форума Ответить с цитированием
Старый 29.12.2009, 04:36   #2
Zugelman
Пользователь
 
Регистрация: 08.04.2009
Сообщений: 50
По умолчанию

у тебя обрабатываеться только один раззз (т.е если у тебя два слова, то будет показываться только последнее)... так как потом ты обнуляешь S, поставь два for'a и флажок(счетчик)
я конечно в С не понимаю ничего, но разве массив с отрицательным адресом ячейки существует?
for(i=0;i<256;i++) замени i на 1
Zugelman вне форума Ответить с цитированием
Старый 29.12.2009, 04:42   #3
Zugelman
Пользователь
 
Регистрация: 08.04.2009
Сообщений: 50
По умолчанию

Код:
#include <iostream.h>
#include <stdio.h>
#include <string.h>
int main()
{
int i,s;
char text[256];
char begin,end;
cout<<"Введите текст\n";
gets(text);
s=0;
for(i=1;i<256;i++){
if(text[i-1]==' '|| i==0)
begin=text[i-1];
if(text[i]==' ')
end=text[i];
if(begin==end)
s++;
}
cout<<s;
return 0;
}
попробуй так... опять же.. я нуб, но хоть пытался помочь
Zugelman вне форума Ответить с цитированием
Старый 29.12.2009, 05:50   #4
Valentine
Пользователь
 
Регистрация: 29.11.2009
Сообщений: 14
По умолчанию

Я переделал немного, совпадение символов нужно проверять когда слово
закончилось, ну еще предусмотреть конец строки и несколько пробелов подряд
Код:
for(i=0;i<strlen(text);i++)
     {
     if((text[i-1]==' '&&text[i]!=' ')||(i==0&&text[i]!=' '))
       begin=text[i];
     if((text[i+1]==' '||text[i+1]=='\0')&&text[i]!=' ')
	{
	end=text[i];
	(begin==end)?(s++):(0);
	}
     }
ну разумеется строка без знаков препинания
Valentine вне форума Ответить с цитированием
Старый 29.12.2009, 08:00   #5
vitaliy1392
Новичок
Джуниор
 
Регистрация: 15.12.2009
Сообщений: 2
По умолчанию

Спасибо за помощь!
Знаки препинания я сделаю, мне сама суть была важна.
vitaliy1392 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Корявое копирование строки. Помогите найти ошибку. GonZaleZ Общие вопросы C/C++ 14 02.12.2009 21:58
Не могу найти ошибку в программе про рентабельность pergeot Паскаль, Turbo Pascal, PascalABC.NET 1 03.11.2009 14:46
Строки. Помогите найти ошибку. 5nizza77 Помощь студентам 1 16.10.2009 16:10