Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 29.12.2009, 03:35   #1
vitaliy1392
Новичок
 
Регистрация: 15.12.2009
Адрес: Россия, Санкт-Петербург
Сообщений: 2
Репутация: 10
По умолчанию Программа про строки в стиле 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, 05:36   #2
Zugelman
Форумчанин
 
Регистрация: 08.04.2009
Сообщений: 50
Репутация: 10
По умолчанию

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

Код:

#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, 06:50   #4
Valentine
Пользователь
 
Регистрация: 29.11.2009
Сообщений: 14
Репутация: 10
По умолчанию

Я переделал немного, совпадение символов нужно проверять когда слово
закончилось, ну еще предусмотреть конец строки и несколько пробелов подряд
Код:

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, 09:00   #5
vitaliy1392
Новичок
 
Регистрация: 15.12.2009
Адрес: Россия, Санкт-Петербург
Сообщений: 2
Репутация: 10
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


03:45.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru