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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2009, 09:25   #1
Ivanito
Пользователь
 
Регистрация: 09.10.2009
Сообщений: 14
По умолчанию Решите ошибки в задаче!

Вот условие!
Напишите программу, которая подсчитывает количество смволив пункутуациии в строке символов, которая вводится с клавиатуры.

Вот код
Код:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
char st[255];
int zp=0,i=0;
main()
{
clrscr();
 cout<<"Vvedіt'  stroku:)";
 cin>>st;
 while(st[i]!=0)
  {
   if (st[i]=='.' || st[i]==',')
	 zp++;
   i++;
  }
 cout<<"\Kіl'kіst' znakіv punktuacії:)"<<zp;
getch();
return 0;
}
программа не работает!Всегда показивает число 0!Помогите

Последний раз редактировалось Stilet; 15.10.2009 в 09:44.
Ivanito вне форума Ответить с цитированием
Старый 15.10.2009, 09:39   #2
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Все по моему правильно у вас там работает, но используйте лучше динамическое выделение памяти под строку, вот так

Код:
#include <iostream.h>
#include <conio.h>

int main()
{

char* st=new char[255];
int zp=0,i=0;

cout<<"Vvedіt' stroku: ";
cin>>st;
while(st[i]!=0)
{
if ((st[i]=='.') || (st[i]==','))
zp++;
i++;
}
cout<<"\Kіl'kіst' znakіv punktuacії"<<zp;

delete []st;
getch();

return 0;
}
profi вне форума Ответить с цитированием
Старый 15.10.2009, 09:39   #3
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию

while(st[i]!='\0')

у тя цикл поидеи бесконечный был если ноль в строке не встречался, \0 - символ конца строки

Последний раз редактировалось Stilet; 15.10.2009 в 13:30.
bondik вне форума Ответить с цитированием
Старый 15.10.2009, 12:53   #4
mYziK
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 38
По умолчанию

Цитата:
у тя цикл поидеи бесконечный был если ноль в строке не встречался, \0 - символ конца строки
'\0' - символ конца строки с кодом 0. Здесь все правильно. (у него ноль - число, а не символ '0')

Цитата:
Код:
 cout<<"Vvedіt'  stroku:)";
 cin>>st;
cin считает только одно слово до первого пробела. используй cin.getline():
Код:
cout<<"Vvedіt'  stroku:)";
cin.getline(st, 255);
Заодно ограничишь колличество вводимых символов

Последний раз редактировалось Stilet; 15.10.2009 в 13:31.
mYziK вне форума Ответить с цитированием
Старый 15.10.2009, 13:34   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
программа не работает!
Проверил на Борланд с++ - все работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.10.2009, 20:55   #6
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

у меня такая же проблема была, но только я подрубился, что только первое слово считывает, там до пробела,а дальше ни как не хочет, решил свою проблемой gets или как то так функция называется, так что тут вся загвоздка крылась в cin )
Olejik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решите задаче в делфи, я на экзамене vbn Помощь студентам 1 23.01.2009 12:09
помогите исправить ошибки в задаче на С++ Wia Помощь студентам 4 14.12.2008 16:09
Найдите, пожалуйта,ошибки в задаче!очень срочно! Wia Помощь студентам 2 06.12.2008 20:02