IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> массив формируемый из текстового файла
torok
сообщение 21.11.2005 1:33
Сообщение #1


Гость






это таже задача, которую я описывал ниже, но теперь нужно считывать значения из текстового файла. Условие задачи: ввести в массив данные из файла и с помощью процедуры преобразовать массив следующим образом: заменить элементы нулями, если они попадают в заданный интервал (x,y).
Я провозился несколько часов, но что-то видимо опять не понимаю.. Программа заменяет нулями все элементы. Посмотрите пожалуйста.
Код

program massivf;
uses crt;
const n=3;
var f:text;
x,y:longint;
ch,i: char;
a,b,c,z: array [char] of longint;
procedure p (var z:longint);
begin
z:=0;
end;
begin
clrscr;
writeln('введите границы диапазона');
read (x,y);
assign(f,'mas.txt');
reset (f);
while not eof(f) do begin
read(f,ch);
if (ord(ch)>x) and (ord(ch)<y) then p(a[ch]) else a[ch]:=ord(a[ch]);
writeln(a[ch]);
end;
close(f);
end.

кстати, это программа (если она вообще должна работать wacko.gif ) не может работать с двузначными и более числами, т.к. читает посимвольно. А хотелось бы чтобы читала любые, но это вообще непосильная пока для меня задача. Хоть бы так заработала smile.gif I need help.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
volvo
сообщение 21.11.2005 1:53
Сообщение #2


Гость






Вот так попробуй:
program massivf;
uses crt;
const n=20;

var
f: text;
x, y:longint;

i: integer;
a: array[1 .. n] of longint;

procedure p (var z:longint);
begin
z:=0;
end;

begin
clrscr;
writeln('введите границы диапазона');
readln(x, y);

assign(f,'mas.txt');
reset (f);

i := 0;
while not eof(f) do begin
inc(i);
read(f,a[i]);
if (a[i] > x) and (a[i] < y) then p(a[i]);
writeln(a[i]);
end;

close(f);
end.


тестировалось на файле:


Прикрепленные файлы
Прикрепленный файл  mas.txt ( 16 байт ) Кол-во скачиваний: 189
 К началу страницы 
+ Ответить 
torok
сообщение 21.11.2005 2:16
Сообщение #3


Гость






Спасибо, всё работает!
А почему я буду разбираться завтра smile.gif
Я понимаю так, что мы считываем из текстового файла сразу целочисленные значения.. я думал, что всё, что там находится является символьным типом и поэт. нужно, руководствуясь ascii, "переводить" c помощью ord в longint.
Этот момент мне не понять и требует изучения. Буду заниматься дальше.
Интересно, а если разделять значения запятыми, то без ord() не обойтись?
 К началу страницы 
+ Ответить 
volvo
сообщение 21.11.2005 2:27
Сообщение #4


Гость






Цитата
Интересно, а если разделять значения запятыми, то без ord() не обойтись?

blum.gif Ищи по форуму, я выкладывал код, который работает независимо от того, как разделены значения в файле...

Хотя ... Я сам тебе дам ссылку...
Вот здесь: Помогите с запятыми
 К началу страницы 
+ Ответить 
torok
сообщение 21.11.2005 10:45
Сообщение #5


Гость






Спасибки!
Буду разбираться! smile.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.06.2025 1:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"