Delphi. Помогите, пожалуйста, решить две задачки
Здравствуйте! Помогите пожалуйста решить 2 задачке в Delphi...очень нужно, без них не поставят зачет((Заранее спасибо!
1)Дан файл f, компоненты которого являются действительными числами. Найти: Сумму компонент файла f. Записать эту сумму в конец файла. Отсортировать файл по возрастанию значений компонент. 2)Даны два текстовых файла f и g. Определить, совпадают ли компоненты файла f с компонентами файла g. Если нет, то получить номер первой строки и позицию первого символа в этой строке, в которых файлы различаются между собой. В случае, когда один из файлов имеет n компонент (n>0) и повторяет начало другого (более длинного файла), ответом должно быть число n+1. |
Ну помогите пожалуйста. Я совсем не понимаю программирование:(если бы понимала-сюда бы не обратилась...
Эти программы пишутся в стиле паскаль! |
Цитата:
По первой задаче. Создайте файл, заполните его числами и присоедините к сообщению. Дело в том, что структура файла может быть разной, в зависимости от требований проекта, соответственно, и команды, которые используются для работы с файлами, будут отличаться. Общее описание решения: Задача делится на две подзадачи - подсчет суммы чисел и сортировка файла, поэтому программа не очень простая. Так как о количестве чисел в файле ничего не сказано, то использовать при сортировке статистический массив нельзя, а с динамическими массивами работать вас, как понимаю, совсем не учили. Предлагаю реализовать сортировку файла с использованием вспомогательного файла. Алгоритмов сортировки в сети достаточно много и у нас на форуме они также неоднократно рассматривались. По второму заданию: Назовем строкой последовательность символов, оканчивающуюся символов с кодом 13, который обрабатывается как признак конца строки. Для считывания файла до конца используйте цикл while... с условием NOT EOF(F). Для считывания построчно используйте цикл while..., условие для него - пока не считан признак конца строки - NOT EOL(F). Считывайте посимвольно в переменные и сравнивайте. Не забудьте определить счетчики для номеров строки и позиции символа в строке. Проще всего написать, что, мол, нифига не смыслю в программировании и вывалить все на форум на удачу в надежде на доброхотов. Попробуйте самостоятельно хоть что-то сделать, тем более, что методички у вас на руках, а там описывается примерный способ решения подобных задач. Если не получится - выкладывайте свои наработки, будем вместе править. А учиться вместо вас никто не собирается. |
1 задача:
program Project2; {$APPTYPE CONSOLE} uses SysUtils; file of real; a,b,x,s:real; n,i,j:integer; begin clrscr; randomize; assign(f,'file'); rewrite(f); write('Сколько чисел записать в файл n='); readln(n); for i:=1 to n do begin a:=20*random-10; write(f,a); end; writeln('Содержание исходного файла:'); reset(f); s:=0; while not eof(f) do begin read(f,a); write(a:0:2,' '); s:=s+a; end; writeln; writeln('Сумма компонент=',s:0:2); seek(f,filesize(f)); write(f,s); writeln('Сумма дописана в конец файла:'); seek(f,0); while not eof(f) do begin read(f,a); write(a:0:2,' '); end; writeln; seek(f,0); for i:=0 to filesize(f)-2 do for j:=i+1 to filesize(f)-1 do begin seek(f,i); read(f,a); seek(f,j); read(f,b); if a>b then begin x:=a; a:=b; b:=x; seek(f,i); write(f,a); seek(f,j); write(f,x); end; end; writeln('Содержание отсортированного файла:'); seek(f,0); while not eof(f) do begin read(f,a); write(a:0:2,' '); end; close(f); readln end. Правильно? |
Когда записываете числа в файл, лучше использовать не write, а writeln, в этом случае каждое число будет записано с новой строки и вам не будет нужды их разделять. В вашем случае вы записываете в файл числа сплошной строкой, без разделителей, потом при попытке их прочитать считывается число, превышающее пределы, определенные форматом переменной и может вылететь ошибка.
|
помогите решить задачу на листбокс
1. В таблице А, состоящей из 8 элементов подсчитать количество положительных и отрицательных элементов. 2. Даны две таблицы А(8) и В(8). Сформировать таблицу С, содержащую те положительные элементы из А, которые есть в таблице В. Результат вывести. |
Часовой пояс GMT +4, время: 15:32. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.