Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2013, 22:08   #1
kinash96
Пользователь
 
Регистрация: 09.10.2013
Сообщений: 15
По умолчанию помогите код дописать

11. Создать текстовый файл целых чисел. Поменять местами первую и последнюю компоненты помогите код дописать файл цілих чисел я создал а вот ка поменять местами компоненты не получается


Код:
var f:Text;
mas:array[0..3] of real; i:integer; st:string;

begin

//decimalseparator('.');

AssignFile(f,'file');
Rewrite(f);

writeln(f,1.1:1:1);

writeln(f,3.1:1:1);

writeln(f,-3.12:1:2);

writeln(f,6.213:1:3);
closefile(f); 
Reset(f,'file');
for i:=0 to 3 do
  begin
    readln(f,st);
    mas[i]:=strtofloat(st);
    write(mas[i],' ');
  end;
CloseFile(f);
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.11.2013 в 22:48.
kinash96 вне форума Ответить с цитированием
Старый 14.11.2013, 22:27   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

У вас файл получился вещественных, а не целых. Если можно испольЗовать вспомогательный массив, то легко:
Код:
Temp:=mas[0];
Mas[0]:=mas[3];
Mas[3]:=temp;
А затем заново записать массив в файл.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 14.11.2013, 22:56   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
У вас файл получился вещественных,
да ни боже ж мой!

у автора темы однозначно ТЕКСТОВЫЙ файл!
Цитата:
Код:
var f:Text;


а чтобы был файл целых чисел, как в задании, нужно написать примерно такой код:
Код:
var f:file of integer;
  i, k1, k2, n : integer;
begin
  {сначала создаём файл и записываем в него числа от 1 до n}
  WriteLn('введите число n - сколько компонентов-чисел записать в файл: ');
  Readln(n);

  AssignFile(f,'f1.dat');
  Rewrite(f);
  for i:=1 to n do Write(f, i );
  CloseFile(f);

  {теперь поменяем местами первую и последнюю компоненты}
  Reset(f); {откроем файл на чтение}
  Read(f, k1); { прочитаем первую компоненту-число в k1 }
  seek(f, FileSize(f)-1); {установили указательно на последнюю запись в файле}
  Read(f, k2);  { прочитаем последнюю компоненту-число в k2 }
  seek(f, FileSize(f)-1); {установили указатель на последнюю компоненту в файле}
  Write(f, k1); {запишем первое число на место последнего}   
  seek(f, 0); {установили указатель на первую компоненту в файле}
  Write(f, k2); {запишем последнее число на место первого }   
  CloseFile(f); {закроем файл}

  {выведем содержимое файла на экран}
  Reset(f); {откроем файл на чтение}
  for i:=1 to FileSize(f) do begin
     Read(f,k1);
     Write(k1:3,' ');
  end;
  WriteLn;
  CloseFile(f); {закроем файл}

  Readln
end.

писал в браузере, могут быть опечатки...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.11.2013, 23:03   #4
kinash96
Пользователь
 
Регистрация: 09.10.2013
Сообщений: 15
По умолчанию

Спасибо Выручили)))))))
kinash96 вне форума Ответить с цитированием
Старый 15.11.2013, 08:44   #5
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Неверно выразился. Получился текстовый файл, в котором не целые, а вещественные числа.
А в задании, которое автор озвучил, требуется именно текстовый файл.
Возможно, автор не до конца понял задание?
И ему нужен был файл целых чисел.

Задание я понял так, что нужно создать текстовый файл, в который записать целые числа, а затем поменять местами первое и последнее.
И не смог сделать без использования вспомогательного массива.

Последний раз редактировалось ZX Spectrum-128; 15.11.2013 в 09:00.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 15.11.2013, 09:12   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128
А в задании, которое автор озвучил, требуется именно текстовый файл.
Возможно, автор не до конца понял задание?
И ему нужен был файл целых чисел.
Да. согласен. Вы правы!
Цитата:
Сообщение от kinash96
Создать текстовый файл целых чисел
Это мой "косяк" - проглядел...

kinash96, ау?!
предложенные мной вариант работает с типизированным файлом, к текстовому файлу это не имеет никакого отношения.
Вы задание правильно привели, в задании именно ТЕКСТОВЫЙ файл?
Тогда мой код из пост #3 Вам не подойдёт!

с текстовым файлом всё надо делать по другому.
Во-первых, выяснить, каким образом заданы числа в данном файле (каждое число на отдельной строке, либо числа находятся на одной строке, но раздлены пробелами или запятыми или ещё чем-то, либо числа заданы ещё как-то..) - без этого обработать данный файл будет невозможно!

Далее, после того, как научились читать числа из текстового файла, решить поставленную задачу можно разными способами.

либо:
читать файл целиком в память (в тот же массив, например). переставить местами элементы массива (см. пост #2) и записать массив в файл (полностью перезаписать содержимое исходного файла)

либо:
использовать дополнительный файл. Перебрать все записи, добравшись до последней. Прочитать её в переменную2. Переотрыть исходный файл.
Прочитать первое число в переменную1. Записать во временный файл переменную2 (это последнее число). Читать в цикле пока не дошли до последнего числа числа и записывать их в выходной файл. Когда дошли до последнего числа - записать в выходной файл переменную1.
Удалить исходный файл (или переименовать его с раширением .BAK). Переименовать временный файл в имя исходного текстого файла.
Профит.

есть и ещё варианты решения.

Разумеется, у каждого из них есть свои плюсы и свои минусы..

Успехов!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.11.2013, 10:02   #7
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

А я понял задачу так, что нужно числа поменять, что называется, "на месте", то бишь без использования вспомогательного файла. Оттого и сдался
Что-то меня не туда занесло
Вряд ли бы студенту явно не профильного вуза дали такую задачу.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите дописать код.. CodeExpert Помощь студентам 3 09.11.2009 09:38
Дописать код в файл! Trol-100 Общие вопросы C/C++ 8 24.10.2009 17:49
Помогите в Builder 6 дописать код!!! bee_uk C++ Builder 7 29.05.2009 23:56
Помогите дописать код Черничный Общие вопросы Delphi 2 24.10.2008 00:08
Помогите дописать мои код поиска! AlexII Общие вопросы Delphi 5 17.05.2008 20:07