IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> последовательность чисел, с++
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Дана последовательность чисел, 0 - ее конец. Определить, сохраняет ли она знак.
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream.h>
#pragma hdrstop

#include <tchar.h>
//---------------------------------------------------------------------------

#pragma argsused
int _tmain()
{
int a,b;
bool y=true;
cin >>a >> b;
if (a==0 || b==0) {
cout<<"DA";
getchar();
return 0;
}
else
while (y && b!=0)
{
a=b;
cin>>b;
if (b!=0) {
y=a*b>0;
}
}
if (y) {
cout<<"DA";
}
else
{
cout<<"NET";
}
getchar();
getchar();

return 0;
}
//---------------------------------------------------------------------------
Почему, если ответ ДА то есть задержка экрана, если НЕТ то консоль закрывается сразу? Или лучше задержку экрана делать через cin или есть другой способ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 11)
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Используй
system("PAUSE");
, Люк.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
Почему, если ответ ДА то есть задержка экрана, если НЕТ то консоль закрывается сразу?
У тебя "Да" выводится в двух местах, если ты не заметил. Какой из них работает нормально?

В общем случае работает не так, как ожидается, потому, что после того, как ты ввел число, ты нажал на Enter. cin считал число, а код Enter-а остался в буфере. Теперь понятно, почему getchar не задерживает выполнение программы? Да потомы, что он читает излишки Enter-ов, которые есть в буфере. После чтения числа опустошай поток, и все будет работать нормально.

Добавлено через 1 мин.
Archon, это не метод. Нужно править недочет в коде, а не маскировать его так, чтобы не было заметно. Ибо не вылезет сейчас - вылезет потом...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
Какой из них работает нормально?
Да, при первом ДА стоит 1 getchar, но и во втором случае, где 2 getchar, если ДА то задержка есть, иначе нету.
А как очистить поток?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






С помощью istream::ignore, например:
cin.ignore(numeric_limits<streamsize>::max(),'\n') ;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
cin.ignore(count, delim) - игнорировать count символов или пока не встретится символ разделитель delim. Символ разделитель заключается в апострофы ' '.
Значит можно смело писать
cin.ignore(255,'\n');
?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






То есть, ты на 100% уверен, что
1) в твоей реализации в поток может поместиться 255 символов
2) что все FAQ-и вот этот, например и советы написаны полудурками, которые вместо того, чтобы написать 255 пишут какую-то ненужную ахинею?

В таком случае извини, это решение "будет работать и фиг с ним. КАК ОНО РАБОТАЕТ - МНЕ НЕВАЖНО". Я в таких обсуждениях участия не принимаю. Программирование - слишком серьезная вещь, чтоб так наплевательски к нему относиться.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


извини, но я что-то не понял это
Цитата
что все FAQ-и вот этот, например и советы написаны полудурками, которые вместо того, чтобы написать 255 пишут какую-то ненужную ахинею?
Скопировал кусочек программы в примере по ссылке (15.3) и ругается на строке
Цитата
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Т.е. в этом примере и есть ошибка?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


А можно поинтересоваться,а ты подключил билбиотеку limits ,если внимательно посмотреть,то в исходной посте она присутствует,а ты ничего про это не упомянул.И еще почему ты так упорно используеш iostream.h,когда тебе уже каждый сказал,что лучше использовать iostream.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
билбиотеку limits...
кажется, я слепой....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Я, если честно, вообще не вижу смысла делать 2 точки, в которых может завершиться выполнение программы. Вот так, скажем:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include <tchar.h>
#include <iostream>
#include <limits>

//---------------------------------------------------------------------------
#pragma argsused

using namespace std;

int _tmain()
{
int a, b;
bool y = true;
cin >> a >> b;

if(a && b) // Я перевернул условие
{
while (y && b != 0)
{
a = b;
cin >> b;
if (b != 0)
{
y = a * b > 0;
}
}
}

if (y) {
cout<<"DA";
}
else
{
cout<<"NET";
}
cin.ignore(numeric_limits<streamsize>::max(),'\n'); // Чистим поток
cin.get(); // Все-таки ждем нажатия, чтоб увидеть результат
return 0;
}
будет более читаемо...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


хитрая штука этот поток... smile.gif
Спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.12.2020 5:11
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name