|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.06.2011, 14:18 | #1 |
Регистрация: 28.06.2011
Сообщений: 3
|
Задача С++ с использованием unsigned int
Здравствуйте, я изучаю язык с++ первый семестр и че то как нам объясняют до меня не очень доходит Дали задачи на практику 2 сделал, а вот с 3ей возникли проблемы. Так как я хочу научиться сам решать эти задачи, не прошу вас решить ее, а прошу о помощи подсказать с чего начать, что требуется итд. По мере выполнения показывал бы что получается=)
вот задача: Написать функцию, преобразующую вводимую с клавиатуры строку цифр в натуральное число. Функция должна: - возвращать значение введённого числа; – игнорировать попытки ввода символов, отличных от цифр; – выдавать сообщение об ошибке при попытке ввода числа, превышающего допустимое значение типа unsigned int. |
28.06.2011, 14:49 | #2 |
Профессионал
Пользователь
Регистрация: 25.05.2011
Сообщений: 91
|
1. Организовать цикл, в котором каждый символ введенной строки проверяется, является ли он цифрой.
2. Создать массив символов, который будет содержать "отфильтрованные" цифры. 3. Преобразовать сформированный массив символов в число. 4. Проверить, умещается ли число в unsigned int, если нет - вывести предупреждение 5. Возвратить результат функции.
Помог? Будь человеком - жми на весы слева!
|
28.06.2011, 14:57 | #3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Для перевода из строки в число вроде есть стандартные функции atoi для int и atof для float.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
28.06.2011, 14:58 | #4 | |
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
Цитата:
Кстати, и проверку "умещения" через сравнение строк сделать элементарно -)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 |
|
30.06.2011, 11:50 | #5 |
Регистрация: 28.06.2011
Сообщений: 3
|
// 1.cpp: определяет точку входа для консольного приложения.
// #include "stdafx.h" #include <conio.h> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) {int a[20], n, i; cout<<"vvedi chislo peremennih n:"; cin>>n; for(i=0; i<n; i++) { cin>>a[i]; if ((a[i]>='0') && (a[i]<='9')) { cout<<a[i]<<endl; } else { if((a[i]='.') || (a[i]='-')) { cout<<"oshibka"<<endl; } else; } } getch(); return 0; } подскажите, что делать. чет даже цикл не могу сделать. |
30.06.2011, 13:07 | #6 | |
Пользователь
Регистрация: 26.06.2011
Сообщений: 85
|
Цитата:
Вот код, думаю это идеальная защита "от дурака" Код:
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (c) Martin Golding
Последний раз редактировалось Nedward; 30.06.2011 в 13:09. |
|
30.06.2011, 13:52 | #7 |
Регистрация: 28.06.2011
Сообщений: 3
|
Nedward, с вами можно как то связаться?)
|
30.06.2011, 15:45 | #8 |
Пользователь
Регистрация: 26.06.2011
Сообщений: 85
|
Можно, связывайтесь
Личные сообщения здесь, вроде-бы работают. Хотя я не проверял.
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (c) Martin Golding
|
01.07.2011, 20:41 | #9 |
Пользователь
Регистрация: 03.08.2009
Сообщений: 77
|
Понравилась задача. Учитывая что я очень редко работал с символьными данными решил попробовать. Вот реализация
Код:
|
03.07.2011, 00:38 | #10 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Кошмар Почему разрядность типа double? Почему проверка > 48 < 57 строгая? atoi переводит строку в число, а не отдельный символ. В этот раз вам повезло, потому что из-за выравнивания за переданным в эту ф-цию байтом следовали нули, но ведь нет гарантии. Да и это как микроскопом гвозди забивать, когда можно всего-то отнять то самое число 48. И зачем в цикле кучу раз выделяете память, и не освобождаете перед тем, как потерять на неё указатель? И вообще, что за безумная ф-ция Check? И, если уж совсем придираться, то для чего у функции, которая гарантированно вернёт значение, не превышающее максимального unsinged int, тип long long? В общем, странная реализация, не рекомендую её ТС, ибо ошибок слишком много.
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Для типов данных char, short, int, long с квалификаторами signed, unsigned составить программу, которая, | listiksasha | Фриланс | 4 | 21.02.2011 12:26 |
Для типов данных char, short, int, long с квалификаторами signed, unsigned составить программу, которая, | listiksasha | Помощь студентам | 2 | 20.02.2011 12:57 |
Есть необходимость использовать unsigned int. Нужен ваш опыт. | Karyuzin | Общие вопросы по Java, Java SE, Kotlin | 1 | 14.12.2010 07:44 |
int vs unsigned int | Kn793 | Общие вопросы C/C++ | 13 | 28.08.2010 22:00 |
[РЕШЕНО][C] unsigned int аргумент работает как signed | Sfuller | Общие вопросы C/C++ | 2 | 30.06.2010 18:17 |