Форум программистов, компьютерный форум CyberForum.ru

неверный ввод - C++

Восстановить пароль Регистрация
 
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
26.10.2011, 12:53     неверный ввод #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cout<<"\tViberite variant vvoda:\n\n";
      cout<<"\t1.Vvod vruchnuy\n";
      cout<<"\t2.Iz faila";
      int menu=0;
      cout<<"\n\nVash variant ? (1 or 2): ";
      cin>>menu; 
      /*while(menu!=1 || menu !=2)  Почему данный цикл не работает?(конешно /**/убираю)))
      {
                 cout<<"Error.Vvedite vash variant: ";
                 cin>>menu;
      }*/
      switch(menu)
      {
      case 1:{ тут пошел выбор
case 2:{ тут пошел выбор
Меню состоит из 2ух пунктов.Вопрос почему при вводе НЕ 1 и НЕ 2 не работает коректно цикл вайл ( ошибка введите вариант 1 или 2)?вроде верно оформил цикл вайл что не так?

П.с default:{} не предлогать.....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2011, 12:53     неверный ввод
Посмотрите здесь:

C++ Деревья, неверный результат
C++ выводит неверный ответ
Неверный указатель на функцию C++
C++ Неверный корень из числа
C++ Неверный возврат из функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.10.2011, 13:04     неверный ввод #2
while(menu!=1 && menu !=2)
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
26.10.2011, 13:13     неверный ввод #3
C++
1
while((menu!=1) || (menu !=2))
не уверен, но можно попробовать
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
26.10.2011, 14:38  [ТС]     неверный ввод #4
Спасиб за ответ,вопрос решен.ТЕму можно закрыть
while((menu!=1) && (menu!=2))

Добавлено через 22 минуты
А нет еще возник вопрос,почему int menu=0; нельзя поменять на float menu=0; просто если вводить дробь тоже должно писать ошибку но когда я ставлю флоат программа не компилируется,как это испраивть?

Добавлено через 41 минуту
Вопрос решен,следующий вопрос
Есть файл текстовый в нем матрицы квадратная
Как сделать проверку того что в файле матрица,что если там что то другое(например вообще файл пустой или там символы какие нибудь) то ошибка введите имя файла с матрицей?

Добавлено через 19 минут
и еще как в с++ представить строку из си printf("%i ",matr[i][j]);
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.10.2011, 14:54     неверный ввод #5
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
Как сделать проверку того что в файле матрица
А как отличить матрицу от других данных?
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
как в с++ представить строку из си printf("%i ",matr[i][j]);
C++
1
std::cout << matr[i][j];
для этого
C++
1
#include <iostream>;
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
26.10.2011, 14:59  [ТС]     неверный ввод #6
Я так пробовал но он показывает
12
34 вот так резльтат если cout << matr[i][j];

а с printf("%i ",matr[i][j]); "%i "тут же пробел,я на с++ не могу сообразить как её записать?
показывает
1 2
3 4 мне так нужно
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.10.2011, 15:03     неверный ввод #7
C++
1
cout << matr[i][j] << " ";
перевод строки
C++
1
cout << endl;
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
26.10.2011, 16:04  [ТС]     неверный ввод #8
Спасиб,то что нужно было.
А вот еще такой вопрос:
1)Ввожу размерность квадратной матрицы
2)Вылазиет меню 1 ввод вручную 2 ввод из файла
Вопрос про ввод из файла
Если ранее введенная размерность не совпадает с той которая в файле(матрица) программа зависает .Как сделать условие ,что если введеная размерность не совпадает с размерностью матрицы в файле,то пишет ошибка введите размерность.надеюсь поняли суть моего вопроса
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
31.10.2011, 13:25  [ТС]     неверный ввод #9
ВВодим размерность матрицы(квадратная) n
Далее открываем файл(имя вводится с клавы ,матрица в файле введена ранее
1 2 3 4
4 5 6 7
7 8 9 0
4 7 1 8 например)

Возможно ли реализовать следующее?

И если длина строки не совпадает с введнной ранее размерностью n,то пишет ошибка введите размерность матрицы.Хотел использовать стрлен но там тип char,не получилось как можно это реализовать?
TwiX
59 / 59 / 1
Регистрация: 27.10.2011
Сообщений: 189
31.10.2011, 15:53     неверный ввод #10
Да, можно. Начинаешь считывать n*n элементов... Если при считывании ты натыкаешься на конец файла (эл-ов мало), то пишешь, что неправильная размерность. И если в конце считывания ты окажешься не в конце файла (эл-ов в файле много), то опять выдаёшь ошибку.
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
31.10.2011, 16:20  [ТС]     неверный ввод #11
а можно пример в коде?
TwiX
59 / 59 / 1
Регистрация: 27.10.2011
Сообщений: 189
31.10.2011, 17:02     неверный ввод #12
Сейчас рабочего ноута под рукой нет. Но будет что-то вроде этого:
C++
1
2
3
4
for (int i=0; i<n*n; i++)
  f >> mat[i];
if (!f.eof() || f.bad())
  cout << "Bad input" << endl;
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
31.10.2011, 17:22  [ТС]     неверный ввод #13
хм не понял код,можешь закомментить?
TwiX
59 / 59 / 1
Регистрация: 27.10.2011
Сообщений: 189
31.10.2011, 20:20     неверный ввод #14
А чего там комментить то? Сначала считываем в массив mat (n*n) элементов, а потом проверяем два флага: если eof(), то мы в конце файла (т.е. в файле было ровно 16 элементов), а если мы считываем какую-нибудь хрень, то bad() станет true.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2011, 08:30     неверный ввод
Еще ссылки по теме:

C++ Почему-то всегда выдаёт неверный ввод
Неверный ввод в файл C++
C++ Неверный формат вывода

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
01.11.2011, 08:30  [ТС]     неверный ввод #15
f >> mat[i]; эту запись не понял просто.
Yandex
Объявления
01.11.2011, 08:30     неверный ввод
Ответ Создать тему
Опции темы

Текущее время: 17:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru