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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2011, 10:19   #1
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос При вводи данных неправильно выводит на экран

вот код программы

Код:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
   int x;
   int y;
   cout<<"Введите два числа конец ввода символ |"<<endl;
   while (((x=getch())!='|')&&((y=getch())!='|'))
   {
      cout<<x<<y<<endl;
   }
 
getch();
return 0;
}
При вводи 1 и 2 на экран выводиться(ссылка на скрин)
http://s42.radikal.ru/i095/1110/58/ae02e193312d.jpg

как это можно устранить или может ошибка в коде саммом
мне нужно что бы программа заканчивалась символо '|' с помошью цикла while просто я по другому не могу тока с помощью getch();
Sylar9 вне форума Ответить с цитированием
Старый 26.10.2011, 10:46   #2
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Код:
   char x;
   char y;
An1ka вне форума Ответить с цитированием
Старый 26.10.2011, 10:51   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Запомните этот ресурс.
getch() читает один символ, а не число - это раз.
getch() возвращает код символа: код символа '1' - 49, код символа "перевод строки" - 13, код символа '2' - 50, код символа "перевод строки" - 13. Что и видим на экране (разделяйте числа при выводе - например, пробелом).
Цитата:
мне нужно что бы программа заканчивалась символо '|' с помошью цикла while просто я по другому не могу тока с помощью getch();
Это обязательное условие?
Abstraction вне форума Ответить с цитированием
Старый 26.10.2011, 11:52   #4
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Запомните этот ресурс.
getch() читает один символ, а не число - это раз.
getch() возвращает код символа: код символа '1' - 49, код символа "перевод строки" - 13, код символа '2' - 50, код символа "перевод строки" - 13. Что и видим на экране (разделяйте числа при выводе - например, пробелом).

Это обязательное условие?
Да это обязательное условия поможешь
Sylar9 вне форума Ответить с цитированием
Старый 26.10.2011, 12:06   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Можно задействовать scanf - она возвращает число успешно прочитанных переменных (if(scanf("%d %d", &x, &y)!=2)). Но вот понять, что скормили именно '|'...

Есть такая функция ungetc(). С её помощью можно брать очередной символ из потока, проверять, равен ли он '|', и если нет - "возвращать" его обратно в поток. Сами числа имеет смысл читать всё же scanf().
Указатель на поток стандартного ввода (для ungetc()) называется stdin.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выводит на экран квадрат из * volery Общие вопросы C/C++ 16 26.04.2010 00:31
выводит на экран изображение (PASCAL) 0001 Фриланс 31 20.01.2010 18:13
C++ массивы - неправильно выводит мнимальный и максимальный элемент((( Blondy Помощь студентам 1 02.12.2009 15:46
программа, которая выводит на экран одно из данных слов vados Паскаль, Turbo Pascal, PascalABC.NET 11 26.10.2007 23:47