Работа с разными типами данных
Primary tabs
У вас есть массив:
type myArr = array[1..8] of integer; var a: myArr;
-- целочисленный из 8 элементов.Пользователь вводит любые целые числа (после каждого нажимает Enter),
до тех пор пока не введет символ решетки #.Задача: сохранить в массив целые числа, которые ввел пользователь
(до символа # или до окончания места в массиве) и вывести их на экран,
значения неиспользованных ячеек массива выводить ненужно.
Решение:
Преобразование из string в integer процедурой Val не рассматриваем, потому что
это урок 18.
Целые числа это тип integer. Символы тип char. Не понимаю как считывать ввод из
консоли разных типов данных. Глобальные переменные с одним именем, но разных типов
создать нельзя. Локальные переменные в разных процедурах или функциях будет
не видно. Если создать переменную типа string, то как её потом преобразовать в число
для записи в массив, который типа integer? Помогите пожалуйста разобраться.
- Log in to post comments
- 2032 reads
vedro-compota
Sun, 01/21/2024 - 18:46
Permalink
просто readln()
Для считывания очередного значения тут достаточно процедуры readln() - она приводится в примерах урока
Подробнее см. видео-комментарий: https://youtu.be/NRD_ueud1ag
_____________
матфак вгу и остальная классика =)
Andrey
Mon, 01/22/2024 - 07:11
Permalink
type
Решение с выводом массива, которое работает до ввода '#'. Если ввести '#',
то Lazarus выдает ошибку о несоответствии числовому типу. Консоль останавливается.
Закоментировал проверку условия (для примера), которое не запустит программу
из-за несоответствия типов. Не понимаю, как остановить цикл после ввода '#'.
vedro-compota
Tue, 01/23/2024 - 12:18
Permalink
да, все логично, тут:
да, все логично, тут:
-- идет попытка сначала считать как число, а потом проверить, чтобы решить проблему придется читать два раза получается, первый раз как char- там любой символ получится считать и сравнить
_____________
матфак вгу и остальная классика =)
Andrey
Wed, 01/24/2024 - 14:19
Permalink
Двойной ввод
Получается приходится 2 раза просить ввести число для записи одной ячейки массива.
Или есть другое решение?
vedro-compota
Sat, 01/27/2024 - 14:47
Permalink
действительно, тут лучше изменить условие
в этом варианте действительно, судя по всему, без двух readln() не обойтись, переформулируем условие задачи на с массива чисел на массив символов, а оригинальную задачку перенесем в урок с процедурой val()
_____________
матфак вгу и остальная классика =)