1 / 0 / 0
Регистрация: 25.01.2020
Сообщений: 7
1

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

25.01.2020, 14:43. Показов 1616. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Не получается заполнить массив чтением данных из списка.

В блокноте Windows набираю массив данных:
5 4 3 2 1

Называю данный файл IsxDan.Bac и размещаю по следующему адресу: С:\IsxDan.Bas

Программ для чтения данного файла:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
CONST n = 5
DIM i AS INTEGER
DIM R(1 TO n) AS INTEGER
OPEN “C:\IsxDan.Bas” FOR INPUT AS #1
FOR i = 1 TO n
INPUT #1, R(i)
NEXT i
CLOSE #1
FOR i = 1 TO n
PRINT #1, R(i);
NEXT i
END
И файл не читается. Не могу понять, где ошибка.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2020, 14:43
Ответы с готовыми решениями:

Как заполнить массив и вывести его на экран
Начнем с того, что массив надо объявить. Если размеры массива заданы, например а(20) или a(5,6),...

Заполнить двумерный массив 6 на 6 и вывести его на экран
Заполнить двумерный массив 6 на 6 таким образом 1 0 0 0 0 1 0 2 0 0 2 0 0 ...

Заполнить массив рядом чисел от 0 до 9, вывести его на экран
дан массив на 10 элементов (задания делать с помощью циклов). - Заполнить его рядом чисел от 0 до...

Функции: заполнить массив биномиальными коэффициентами и вывести его на экран
Сформировать массив M, элементы которого mi = Cn i , где: Cn i = n! / i! (n - i)! , n = 20; i =...

15
1104 / 480 / 33
Регистрация: 05.07.2018
Сообщений: 1,870
Записей в блоге: 7
25.01.2020, 16:00 2
Уважаемый Igor1108,
ваша ошибка находится в строке 10. Программа пытается распечатать в файл, который уже закрыт, массив R() (Вот программа вам и подсказывает, что файл не читается), когда надо просто распечатать его на экран. То есть, строка 10 должна выглядеть так

QBasic/QuickBASIC
1
   PRINT R(i);
0
1 / 0 / 0
Регистрация: 25.01.2020
Сообщений: 7
25.01.2020, 16:41  [ТС] 3
wer1, большое спасибо за ответ.
пробовал я такой вариант. не получается.
при запуске программы выдает следующие сообщения об ошибке:

Line: 6 (in main module)
File not found
Continue?

Line: 8 (in main module)
Bad file name or number
Continue?

Я вот думаю, может файл созданный в блокноте Windows 10 просто не может быть открыт программой, работающей под MS-Dos. Просто я пока не совсем понимаю данный момент.
0
913 / 240 / 100
Регистрация: 21.10.2012
Сообщений: 580
25.01.2020, 19:29 4
Цитата Сообщение от Igor1108 Посмотреть сообщение
Называю данный файл IsxDan.Bac и размещаю по следующему адресу: С:\IsxDan.Bas
Кроме того, что Вам написал wer1, еще: Данные записываете в IsxDan.Bac, а пытаетесь прочитать из IsxDan.Bas

И как Вы размещаете файл по адресу другого файла ???
1
1 / 0 / 0
Регистрация: 25.01.2020
Сообщений: 7
26.01.2020, 04:17  [ТС] 5
Цитата Сообщение от markiza-inc Посмотреть сообщение
Кроме того, что Вам написал wer1, еще: Данные записываете в IsxDan.Bac, а пытаетесь прочитать из IsxDan.Bas
markiza-inc, есть такой момент. ошибся когда набирал сообщение.

код сейчас выглядит следующим образом:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
1 CONST n = 5
2 DIM i AS INTEGER
3 DIM R(1 TO n) AS INTEGER
4 CLS
5 OPEN "C:\IsxDan.Bas" FOR INPUT AS #1
6 FOR i = 1 TO n
7 INPUT #1, R(i)
8 NEXT i
9 FOR i = 1 TO n
10 PRINT R(i);
11 NEXT i
12 END
Во вложении 2 скриншота: 1) размещение файла на диске С; 2) содержимое файла, которое хочу вывести на экран.
Миниатюры
Как заполнить массив путем чтения данных из списка и вывести его на экран   Как заполнить массив путем чтения данных из списка и вывести его на экран  
0
1 / 0 / 0
Регистрация: 25.01.2020
Сообщений: 7
26.01.2020, 08:03  [ТС] 6
Уважаемые участники форума!
Большое спасибо за помощь. Нашел свою ошибку. Все получилось
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
26.01.2020, 08:07 7
Цитата Сообщение от Igor1108 Посмотреть сообщение
Я вот думаю, может файл созданный в блокноте Windows 10 просто не может быть открыт программой, работающей под MS-Dos. Просто я пока не совсем понимаю данный момент.
А каким образом вы запускаете программу, работающую под MS-Dos?
Скорее всего это эмулятор, возможно Досбокс. В среде эмуляторов и различных виртуальных машин своё файловое окружение, свой диск C:, который не тот что в основной системе. Соответственно программа, запущенная из под гостевой системы не имеет прямого доступа к файлам на основной системе.
0
1 / 0 / 0
Регистрация: 25.01.2020
Сообщений: 7
26.01.2020, 08:39  [ТС] 8
Цитата Сообщение от Pro_grammer Посмотреть сообщение
А каким образом вы запускаете программу, работающую под MS-Dos?
в этом моменте я не очень ориентируюсь. я просто нашел QBasic, который совместим с Windows 10 и работаю в нем.

проблем оказалось в неправильном расширении файла. сейчас поменял расширение с IsxDan.Bas на IsxDan.txt и все получилось.

вот такой получился код чтения файла:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CONST n = 5
CONST m = 7
DIM i AS INTEGER
DIM j AS INTEGER
DIM jj AS INTEGER
DIM R(1 TO n, 1 TO m) AS DOUBLE
CLS
OPEN "C:\IsxDan.txt" FOR INPUT AS #1
FOR i = 1 TO n
    FOR j = 1 TO m
        INPUT #1, R(i, j)
    NEXT j
NEXT i
CLOSE #1
FOR i = 1 TO n
    jj = 0
    FOR j = 1 TO m
        jj = jj + 6
        PRINT TAB(jj); R(i, j);
    NEXT j
    PRINT
NEXT i
END
еще раз, всем спасибо большое!
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
26.01.2020, 13:44 9
Цитата Сообщение от Igor1108 Посмотреть сообщение
я просто нашел QBasic, который совместим с Windows 10

QBasic который совместим с Windows 10 x64 не существует. Бывает похожая программа QB64, или эмуляторы DOS + Qbasic.

Можете тут выложить скриншот с окном вашего QBasic и набранным в нём текстом этой программы, очень интересно.
0
1 / 0 / 0
Регистрация: 25.01.2020
Сообщений: 7
26.01.2020, 16:48  [ТС] 10
Цитата Сообщение от Pro_grammer Посмотреть сообщение
QBasic который совместим с Windows 10 x64 не существует. Бывает похожая программа QB64, или эмуляторы DOS + Qbasic.
возможно Вы правы. на самом деле я в этом не разбираюсь. скриншот во вложении.
Миниатюры
Как заполнить массив путем чтения данных из списка и вывести его на экран  
0
67 / 17 / 0
Регистрация: 26.01.2018
Сообщений: 166
26.01.2020, 17:55 11
Цитата Сообщение от Igor1108 Посмотреть сообщение
QBasic, который совместим с Windows 10
Под XP работает это точно.
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
26.01.2020, 18:51 12
Цитата Сообщение от Igor1108 Посмотреть сообщение
скриншот во вложении.
Чего там разбираться, написано же на окне QB64
Это вообще не Qbasic, не имеет ни какого отношения к MS-Dos. Конкретно для Винды.
Собственно потому у вас и работает
1
67 / 17 / 0
Регистрация: 26.01.2018
Сообщений: 166
27.01.2020, 15:34 13
Цитата Сообщение от Igor1108 Посмотреть сообщение
я просто нашел QBasic
Зачем вам эта древность?
0
5000 / 1672 / 409
Регистрация: 25.04.2010
Сообщений: 4,619
Записей в блоге: 2
29.01.2020, 05:15 14
Igor1108, продолжай изучать, язык идеально подходит на старте обучения(и не только),
но есть нюансы.

1) Советую начать изучение "в спартанских условиях" с реального QuickBasic(версия 4.5 подойдёт),
QB64 - это бутофория, грубо говоря ты будешь пользоваться встроенным функционалом, но
понимание, того как оно работает - не придёт, а это ключевой навык, дающий качественные
различия в мышлении.
Если цель конструирование и "формошлёпинг" - тогда можно продолжать долбить QB64, если
цель всё таки программирование - то выбор очевиден. А будет база QB - на любой диалект сможешь
сойти в считанные дни и QB64 и FB и PB и VB\VBA, везде база одна, скопирована с примитивного QB.

На десятке оригинальный QuickBasic не запустится(та же 4.5 была написана ближе к концу 80-х)
это делается через любой эмулятор ПК. Самый простой вариант поставить DOSBox. У него есть конфиг
файл, в самом низу секция Autoexec, вот мой конфиг:
Код
[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
MOUNT C: C:\DOS
C:
CLS
SYSTEM\KEYRUS
SYSTEM\VC\VC
Отсюда можно увидеть, что на диске C: у меня создана папка DOS, в ней папка SYSTEM
в которой лежит файл KEYRUS.COM и папка VC в которой 4 файла менеджера Volkov Commander
т.е. VC.COM, VC.HLP, VC.ICO, VC.INI, с оболочкой в DOS-е работать удобнее.
В самой папке DOS можно создать папку QB и закинуть туда QUICK BASIC 4.5.
Закреплю это всё в архиве, можешь распаковать прям в корень диска C: , накатить конфиг, что выше дал
и сразу всё заработает.

2) Выучи самые базовые и основные структуры алгоритмов(важно их понимание, а не язык,
тем не менее на QuickBasic - упражняться в этой теме не советую, лучше это делать на языках,
где есть нетипизированные указатели, в других ЯП это не будет препятствием, если есть чёткое
понимание сути данного вопроса).
3) Рекомендую полностью изучить синтаксис и освоить методики модульного программирования.
4) Рекомендую сделать небольшое отступление и попрограммировать на Pascal, для более
детального понимания в работе механизмов преобразования типов данных.
5) Рекомендую попрограммировать на Assembler(уже после того как на ВУ будет прогресс).
Начинающему можно это делать вставками на паскале. Исключительно на стадии обучения
можно использовать Turbo Debugger или аналоги. На данном этапе сможешь понять сильно
ли тебе это нужно. Возможно сменишь профиль на системного программиста.
6) Старайся подводить полученные знания к проектам, к реальному софту, приучай себя
вкалывать(даже на износ ради результата), перемалывать большие объёмы кода.
7) После всего этого взвесь все за и против, выбери язык на долгосрочную перспективу.
Купи "бумажные" книги, которыми удобно пользоваться как справочниками по тому или
иному аспекту.
8) Вырабатывай хороший стиль кода. Тут могу дать несколько советов от себя:
Не пиши формулы сжато, это плохой тон. Пример: "a=((b+c)-d)/3"
Лучше написать: "a = ((b + c) - d) / 3"
Делай отступы пробелами(не табуляцией). Впрочем между кодом в твоих сообщениях 1-м и 8-м
есть большая разница. Сам предпочитаю ставить "мозаикой", так глаз лучше схватывает,
но в небольших пределах можно варьировать. Главное не делать отступы слишком большими.
9) Ставь приоритеты на более комплексный софт. За откровенную чушь не берись и не трать время.
10) Наращивай собственную кодовую базу по широкому кругу аспектов.
11) Разрабатывай авторские алгоритмы.
12) Изучай прикладные области в которых ведёшь разработку.
13) Сейчас будет очень важный пункт. ВСЕГДА(!!!) пиши полную документацию на то что
разрабатываешь. Во всех нюансах. Каждый алгоритм, каждую структуру, каждую переменную.
Всё подлежит документированию.
Вложения
Тип файла: zip DOS.zip (931.7 Кб, 3 просмотров)
2
1 / 0 / 0
Регистрация: 25.01.2020
Сообщений: 7
29.01.2020, 15:51  [ТС] 15
Quiet Snow большое спасибо за Ваш такой подробный пост и за Ваши наставления.
Большое спасибо!
0
5000 / 1672 / 409
Регистрация: 25.04.2010
Сообщений: 4,619
Записей в блоге: 2
29.01.2020, 16:54 16
Цитата Сообщение от Igor1108 Посмотреть сообщение
Quiet Snow большое спасибо за Ваш такой подробный пост и за Ваши наставления.
Большое спасибо!
Это скорее рекомендации.

P.S: Ну и разумеется, салютую Pro_grammer-у.
0
29.01.2020, 16:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2020, 16:54
Помогаю со студенческими работами здесь

Заполнить одномерный массив случайными числами и вывести его на экран
1)заполнить одномерный массив случайными числами и вывести его на экран.Выбрать минимальный элемент...

Заполнить ступенчатый массив заданным образом и вывести его на экран
Заполнить ступенчатый массив заданным образом и вывести его на экран: 0 1 2 3 4 0 1 2 3 ...

Заполнить ступенчатый массив заданным образом и вывести его на экран
Заполнить ступенчатый массив заданным образом и вывести его на экран: Вот примерно я что то...

Изменить массив путем деления всех его элементов на максимальный по модулю элемент, вывести все на экран и в файл
Дан двумерный массив размером n*m, заполненный случайными числами из заданного пользователем...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru