Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 9 / 0
Регистрация: 21.11.2015
Сообщений: 28

Контроль вводимых данных в программе перевода систем счисления

13.01.2016, 21:15. Показов 1497. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, я написал программу для перевода чисел из 8сс в 10сс и обратно, но не в этом суть. Препод сказал сделать проверку на вводимые данные, я сделал так, чтобы при вводе букв(да да, в программу для цифр препод вводит буквы) программа выдавала ошибку и просила ввести заново. И тут вся соль, препод хочет, чтобы при вводе чего-то вроде <<123234sfdsfgvs>> программа считывала лишь цифры а буквы игнорила. Подскажите пожалуйста как сделать подобную проверку.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.01.2016, 21:15
Ответы с готовыми решениями:

Функция перевода систем счисления
Написать функцию с параметром перевода десятичного числа из системы с основанием меньше 10 в десятичную систему счисления

Алгоритм перевода систем счисления
Доброго дня! Очень большой новичок в языке Ассемблера, прошу помощи с заданием: Необходимо реализовать алгоритм, использующий команды...

Программа перевода систем счисления
Не могу написать программу по переводу числа из 10-ой в 2-ую. Смотрел другие темы не понял да и программы там не понятные были. Если...

3
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,366
14.01.2016, 18:54
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от metropolit76 Посмотреть сообщение
да да, в программу для цифр препод вводит буквы
Программа должна выдерживать общение с самым не обученным академиком, и жрать всё, что дают. Печать на экране табу в виде "вводите только то-то и то-то" явно недостаточно. Люди - невнимательные и одновременно любопытные существа. Табу либо не будет прочитано, либо будет принято как "а что, если...".

Вот пример ввода строки только из символов '0'..'7', всё остальное, кроме <Enter> и <BackSpace>, игнорируется, если ничего не введено (сразу <Enter>), строка получает значение '0'. Длина вводимой строки дополнительно ограничена величиной 8 символов.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
uses crt;
 
var s: string;
    c: char;
 
begin
  s := '';
  write('n = ');
  repeat
    c := readkey;
    if c in ['0'..'7']
      then begin
        s := s + c;
        write(c)
      end
      else if (c = #8) and (length(s) > 0)
        then begin
          delete(s, length(s), 1);
          write(c, ' ', c)
        end;
  until (c = #13) or (length(s) = 8);
  writeln;
  if length(s) = 0 then s := '0';
 
  write('n = ', s); {проверочная печать, естественно, нужно удалить}
  {далее s можно использовать}
  {...}
 
  repeat until keypressed
end.
0
1 / 1 / 8
Регистрация: 14.01.2016
Сообщений: 27
14.01.2016, 21:58
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  S: ansistring;
  k: integer;
 
begin
  repeat
    k := 0;
    Write('S = ');Readln(S);
    if S <> '' then
      repeat
        inc(k);        
        if not (S[k] in ['0'..'9']) then
        begin
          Delete(S, k, 1);
          dec(k);
        end;        
      until k = length(S);
      if S = '' then S:='0';
    Writeln('New S = ', S);  // В S только цифры, если ввeли только буквы, то 0
  until false;
end.
0
Модератор
10422 / 5710 / 3401
Регистрация: 17.08.2012
Сообщений: 17,366
14.01.2016, 23:14
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

SuperN0va, вытряхнуть мусор из строки можно немножко проще. Вот, делает то же самое, только малость побыстрее, да и код покороче:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var s: string;
    k: integer;
 
begin
  write('S = ');
  readln(S);
  for k := length(s) downto 1 do
    if not (s[k] in ['0'..'9'])
      then delete(s, k, 1);
  if length(s) = 0 then s := '0';
  writeln('New S = ', s);
  readln
end.
При вводе, как и у Вас, отображаются все символы, это далеко не всегда приемлемо. В коде из поста #2 отображаются и могут быть введены только заданные символы. То есть, при нажатии на клавишу "не с тем" символом на дисплее вообще ничего не изменится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2016, 23:14
Помогаю со студенческими работами здесь

Не работает программа перевода систем счисления
Неполучается написать перевод из 10й системы в 16ную. Допустим 13(10) в 16ной системе показывает как 3(?) а не как 13(16). И помогите...

Функции перевода систем счисления (из 10 в 16 и наоборот)
Помогите пожалуйста составить функцию перевода из 10 в 16 и наоборот

Написать программу перевода вводимых чисел из одной системы счисления в другую
мне нужна программа на питоне, перевод числа из любой системы счисления в любую (до 16ной системы счисл) ввести сс из которой нужно...

Составить программу для перевода систем счисления
очень нужна программа которая могла бы переводить числа из 10 в 2 8 16 и обратно, не могу написать нормально на 10 версии, помогите...

Функции для перевода из разных систем счисления
подскажите функции для перевода из разных систем счисления Добавлено через 1 час 19 минут А такая вообще есть, и если нед то как...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru