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

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

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


Ответ
 
Опции темы
Старый 30.04.2009, 16:33   #1
kAND
Пользователь
 
Аватар для kAND
 
Регистрация: 30.11.2006
Сообщений: 15
По умолчанию C++: обработка ввода данных

В общем такая ситуация, участвовал в олимпиаде по программированию, было такое задание (текст задания пишу как помню):
"Сформировать массив N x N (N вводится с клавиатуры), члены которого возрастают по спирали (по часовой стрелке), начиная с элемента 1 x 1. Также предусмотреть обработку ввода неточных данных (символов, нуля и отрицательного значения)".
В качестве языка программирования я выбрал Си++. Удалось сформировать массив, но не знал как обработать ввод символьных данных (то есть чтоб при вводе не числа выводилось сообщение об ошибке).

P.S. Сразу прошу прощения, если подобная тема уже есть.

P.S. (2) Забыл написать, программа под DOS

Последний раз редактировалось kAND; 30.04.2009 в 16:38.
kAND вне форума Ответить с цитированием
Старый 30.04.2009, 16:39   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Посмотрите вот это:
http://programmersforum.ru/showthread.php?t=43624
http://programmersforum.ru/showthread.php?t=3338
http://programmersforum.ru/showthread.php?t=35889

Что за обработка данных вообще не понял. Ведь нужно сформировать матрицу. Следовательно, мы сами решаем, чем ее заполнять.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.04.2009, 16:55   #3
kAND
Пользователь
 
Аватар для kAND
 
Регистрация: 30.11.2006
Сообщений: 15
По умолчанию

Я сформировал матрицу Мне нужно, чтобы при вводе N, выводилось сообщение "Unrecognized value"
kAND вне форума Ответить с цитированием
Старый 30.04.2009, 16:59   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Мне нужно, чтобы при вводе N, выводилось сообщение "Unrecognized value"
о_О В каком смысле?
Так?
Код:
cin>>N;
cout<<"Unrecognized value";
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.04.2009, 17:07   #5
kAND
Пользователь
 
Аватар для kAND
 
Регистрация: 30.11.2006
Сообщений: 15
По умолчанию

О ужас ) Нет
Объясняю подробнее Хотя и до этого вроде не замутно объяснял
Итак:
Код:
int n;

scanf("%d",n); // либо так: cin>>n
Но если человек введет, например, "А", либо ещё какую-нибудь ерунду...
На этот случай мне нужно вывести сообщение об ошибке.
kAND вне форума Ответить с цитированием
Старый 30.04.2009, 17:18   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
int main()
{
int i,N;
char str[100];
scanf("%s",str);
for(i=0;i<strlen(str);i++)
 if(!isdigit(str[i]))
  {
   printf("Unrecognized value\n");
   break;
  }
getch();
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.04.2009, 17:25   #7
kAND
Пользователь
 
Аватар для kAND
 
Регистрация: 30.11.2006
Сообщений: 15
По умолчанию

Sazary, спасибо, это работает, но как потом преобразовать строку в число?
kAND вне форума Ответить с цитированием
Старый 30.04.2009, 17:29   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
но как потом преобразовать строку в число?
Ах да, забыл )
Стандартная функция atoi(<строка>) из stdlib.h.
Код:
N = atoi(str);
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.04.2009, 17:33   #9
kAND
Пользователь
 
Аватар для kAND
 
Регистрация: 30.11.2006
Сообщений: 15
По умолчанию

Спасибо большое, теперь буду знать, что делать в таких ситуациях.
kAND вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка исключений ввода в TMaskedEdit joker Общие вопросы Delphi 8 11.06.2008 14:02
Контроль ввода данных в классе oleg kutkov Общие вопросы C/C++ 1 14.04.2008 21:19
обработка ситуации неверного ввода данных Sweta Помощь студентам 0 22.11.2007 17:13
проверка ввода данных в форму @Simpson JavaScript, Ajax 1 12.11.2007 02:17


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя