Saitei, можно считывать то, что ввел пользователь, как строку. А после этого посимвольно проверять, нет ли в ней запрещенных символов (в твоем примере - это все символы, кроме цифровых).
Code
#include <stdio.h> #include <iostream>
using namespace std;
bool ReadInt(int* n) { char buf[256]; cin>>buf; for (unsigned int i = 0; i < strlen(buf); i++) { if (buf[i]!='0'&&buf[i]!='1'&&buf[i]!='2'&&buf[i]!='3'&&buf[i]!='4'&&buf[i]!='5'&&buf[i]!='6'&&buf[i]!='7'&&buf[i]!='8'&&buf[i]!='9') { return false; } } (*n) = atoi(buf); return true; }
int main() { int num = 0;
if (ReadInt(&num)) cout<<"You entered: "<<num<<endl; else cout<<"Error!"<<endl;
Ух, ну это вообще отдельная история. Дело, значит, было так...
Иду я по району. Всё нормально, иду-иду.. Фигак! И я не иду! Прикинь? А ты спросишь "Чё я не иду?". Кароче, смотрю вниз, а я в канализации валяюсь. Прикинь? Я провалился в канализацию. Базарить не буду. Внатуре! Я вылажу, там хопа ссверху бабка лопатой по горбу - УМРИ СУКА!! УМРИ!! - я говорю - Бабка ты чё гонишь или чё? Я жить хочу!- а она меня дальше лопатой сверху по голове. И я ваще кароче туда упал, в трубе плыву, с говном плаваю там, разговаривую. Я вообще убитый нахрен. Чё? Не! Я не наркоман, Вася. Чего ты такое спрашиваешь? Я не колюсь, задолбал. Всё нормально. Ну вообще, блин, короче. Упал я в канализацию. Ты понял да? Я рассказывал уже. ПРИКИНЬ! Херак, рожа крысы такая здоровая, смотрит на меня и говорит - Ты чё? Убитый или чё? - я говорю - Я убитый? Ты чё больной? - поворачиваюсь направо, а там черепашки ниндзя мутузят бомжа какого-то. Прикинь? Тренеруются. Сплинтер кричит - Пацаны, расслабились. Тут у нас новое тело приплыло - я говорю - Вася, слыш, Это я новое тело? - Я его на нах, в тыкву, тупо в разнос. Эта черепашка мне на спину. Эти клыки мне в затылок ПУХ! Говорит - Я тебе щас мозги высосу! - я ему - Ты чё? Ахренел? Это всё что осталось? - И об землю его БАХ в тыкву БАХ. Короче, с ног его поднимаю, тут сплитер, долбанутая крыса, подходит и ХОПА меня за яйца! Я ему такой - Олень! Пусти яйца! Больно!! - я его за нос, тяну на себя и на дес его ДОЛБЫСЬ! Смотрю, а у меня нос остался в руке. Я кричу - Ба! Вася, что это такое?? - а он такой ошалевший пытаеться нащупать нос - ...где мой нос? - я ему - Вася, не отдам, иди ты в жопу. Понял? Я его себе оставлю для прикола, поржать с дружбаном. Мы когда опять укуримся, я достану нос и мы начнём ржать, будем смотреть на нос и ржать. Нос крысы! Прикинь? Да ещё и сплинтера! - ну мы короче убились это вообще...
goldsphere, если ты объявишь один лишь указатель, то выделится память только под указатель, а не под данные, на которые он ссылается. А потом ты пытаешься обратиться к этим данным, что и приводит к ошибке доступа. Должна быть какая-то функция инициализации или что-то в этом духе, руководство по движку тебе в помощь.
И еще, баг - если дискриминант получился отрицательным, то программа все равно пытается взять от него корень. И да, с точки зрения оптимизации лучше посчитать дискриминант один раз и записать значение в переменную, а не считать его каждый раз, когда оно понадобится. Добра и удачи.
Сообщение отредактировал RUNGOGET2THECHOPAH - Суббота, 17 Ноября 2012, 23:04
Цвета вообще нет самого по себе. Есть только твое зрение, не глаза. Твои касания, не тело. Твой слух, но не уши. Понимаешь? Нет ничего, кроме ощущений. Нет никаких людей. Никаких стран. Нет никакого мира. Есть только ощущения. Почему нет глаз на затылке? Потому что позади тебя ничего нет. Там пустота. Ничего. Ощущение - это все, на что способно твое жалкое никчемное сознание. Почему что-то причиняет боль, а что-то удовольствие, спросишь ты? Потому что ты школьник.
Суть такова: Правильность вложенности. Бежим по файлу: 1. Если встречаем # FOR ID=, кладем в стек (который изначально пуст) что-то, что однозначно идентифицирует данный цикл (идентификатор, насколько я понял). 2. Если встречаем # NEXT ID, пытаемся достать из стека последний добавленный в него элемент. 2.1. Если при этом стек уже пуст, то найдена ошибка - попытка закрыть несуществующий цикл. 2.2. Если то, что мы достали, не совпадает с идентификатором из # NEXT ID, то найдена ошибка - несоответствие FOR и NEXT. 2.3. Если совпадает, то бежим по файлу дальше. 3. Если файл кончился: 3.1. Стек пуст - ошибок не найдено. 3.2. Стек не пуст - ошибка - незакрытый(е) цикл(ы).
Сдвиг позиций (с учетом того, что проверка на правильность уже произведена) 1. Копируем содержимое файла в память, стек пуст. 2. Бежим по строчкам: 2.1. Если текущая строчка не содержит ни FOR, ни NEXT, то пишем ее в файл с отступом равным 2*(текущий размер стека). 2.2. Если содержит FOR, пишем с тем же отступом, а потом добавляем что-нибудь в стек (идентификатор, например). 2.3. Если содержит NEXT, удаляем последний элемент из стека, а после этого пишем с тем же отступом.