Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Паскаль, создать файл .txt (http://www.tehnari.ru/f41/t93841/)

Aleksandr5991 16.01.2014 19:22

Паскаль, создать файл .txt
 
Привет всем! Очень прошу помочь, нужно создать файл .txt в него ввести числа, терминатор 0,сначала найти max? потом найти max с лева, не входящее в файл, например если строка 5 9 -7 8 1, то вывести должен 7! так как максимальное 9, а max с лева 8, оно есть в сроке, проверяем дальше, 8 его max с лева это 7, его нет. Значит его выводим)

AlexZir 16.01.2014 19:46

Честно говоря, ничего не понял из вашего сумбура. Как самое минимальное число может быть максимальным? Ведь в вашем примере нет 7, но есть -7.

Для работы с текстовыми файлами используйте следующие команды и операторы:
Описание файловой переменной в разделе переменных
var F:Text;
Ассоциирование файловой переменной с текстовым файлом на диске
assign(f,'name.txt');
Создание файла с указанным именем и открытие его по записи
rewrite(f);
Запись значения целочисленной переменной N в файл, открытый по записи
write(f,n:4);
Закрыть открытый файл
close(f);
Открыть файл по чтению
reset(f);
Открыть файл по дозаписи
append(f);
Прочитать значение из файла в переменную
read(f,n);

Теперь вам остается только правильно применить команды в вашей программе и задача решена. Удачи!

З.Ы. Слово "слева" пишется слитно, а выражение "в строке" кардинально отличается от "срока", да и знаки препинания не просто так придуманы. Учите русский язык, хотя бы для того, чтобы над вами не смеялись!

Aleksandr5991 16.01.2014 19:54

про русский язык вы правы, просто печатал быстро, а объяснить словами действительно трудно( попробую сказать по другому. Найти в файле максимальный элемент, и проверить есть ли то число которое стоит перед ним в строке, если есть, проверяем для него! Если его нет, то выводим.

Vladimir_S 16.01.2014 19:56

Так. Уважаемые коллеги, а также студенты!
Уже не первый раз, и даже не первый год, вижу я в выкладываемых на наш форум заданиях эти таинственные "максимумы (минимумы) слева и справа". Так вот, не взирая на весьма солидный опыт в области программирования, вынужден признаться в том, что не имею ни малейшего представления о подобных категориях. Более того, Интернет, похоже, тоже не в курсе - никаких внятных определений этих понятий мне найти не удалось. Подозреваю, что это какое-то Know How каких-то шибко умных преподов какого-то чудо-ВУЗа. Или группы ВУЗов.
Так вот - до тех пор, пока мне четко и ясно не объяснят, что следует понимать под минимумом/максимумом слева/справа, я никакой помощи в выполнении подобных заданий оказать, увы, не смогу.

Aleksandr5991 16.01.2014 20:05

я привел не большой пример. 5 9 -7 8 1 0
max элемент тут 9. перед ним идёт 8! она с строке есть, значит проверяем для 8.
перед 8 стоит 7, её в строке нет, значит выводим её!
вот это нужно написать в программе(

Aleksandr5991 16.01.2014 20:11

ответьте пожалуйста(

Vladimir_S 17.01.2014 10:45

Цитата:

Сообщение от Aleksandr5991 (Сообщение 992865)
ответьте пожалуйста(

Ладно. Сделал, как понял. Не, ну черт возьми, неужели так трудно выполнить элементарную просьбу и написать своими словами, что есть экстремум слева/справа в общем случае? Впрочем, похоже, дитятко все силы кладёт на то, чтобы не перетрудиться. Зачем что-то объяснять - пальчики любимые устанут! Ладно.
Код:

Var
 f:Text;
 a,Max:Integer;

Function Left(Q:integer):boolean;
var b:boolean;
begin
 Reset(f);
 b:=false;
 Repeat
  Read(f,a);
  if a=Q then b:=true;
 Until b or EoF(f);
 Close(f);
 Left:=b;
end;

Begin
 Assign(f,'text.txt');
 Rewrite(f);
 write('First number: ');
 Readln(a);
 if a<>0 then
  begin
  Max:=a;
  write(f,' ',a);
  Repeat
    write(' Next number: ');
    Readln(a);
    if a<>0 then write(f,' ',a);
  Until a=0;
  Close(f);
  Reset(f);
  Repeat
    read(f,a);
    if a>Max then Max:=a;
  Until EoF(f);
  Close(f);
  Writeln;
  While Left(Max) do Dec(Max);
  Writeln('Result: ',Max);
  Readln;
  end
 End.



Часовой пояс GMT +4, время: 19:55.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.