|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
15.12.2011, 19:58 | #1 (permalink) |
Новичок
Регистрация: 15.12.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Delphi. Помогите, пожалуйста, решить две задачки
1)Дан файл f, компоненты которого являются действительными числами. Найти: Сумму компонент файла f. Записать эту сумму в конец файла. Отсортировать файл по возрастанию значений компонент. 2)Даны два текстовых файла f и g. Определить, совпадают ли компоненты файла f с компонентами файла g. Если нет, то получить номер первой строки и позицию первого символа в этой строке, в которых файлы различаются между собой. В случае, когда один из файлов имеет n компонент (n>0) и повторяет начало другого (более длинного файла), ответом должно быть число n+1. |
15.12.2011, 19:58 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Ранее наши участники создавали похожие обсуждения Помогите, пожалуйста, решить задачки Помогите решить задачки Помогите решить задачки Помогите, пожалуйста, решить задачки в Паскале по одномерным массивам Помогите, пожалуйста, решить задачки в Паскале по одномерным массивам Помогите, пожалуйста, решить задачки в Паскале |
16.12.2011, 21:35 | #3 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
То есть вам нужны консольные программы?
По первой задаче. Создайте файл, заполните его числами и присоедините к сообщению. Дело в том, что структура файла может быть разной, в зависимости от требований проекта, соответственно, и команды, которые используются для работы с файлами, будут отличаться. Общее описание решения: Задача делится на две подзадачи - подсчет суммы чисел и сортировка файла, поэтому программа не очень простая. Так как о количестве чисел в файле ничего не сказано, то использовать при сортировке статистический массив нельзя, а с динамическими массивами работать вас, как понимаю, совсем не учили. Предлагаю реализовать сортировку файла с использованием вспомогательного файла. Алгоритмов сортировки в сети достаточно много и у нас на форуме они также неоднократно рассматривались. По второму заданию: Назовем строкой последовательность символов, оканчивающуюся символов с кодом 13, который обрабатывается как признак конца строки. Для считывания файла до конца используйте цикл while... с условием NOT EOF(F). Для считывания построчно используйте цикл while..., условие для него - пока не считан признак конца строки - NOT EOL(F). Считывайте посимвольно в переменные и сравнивайте. Не забудьте определить счетчики для номеров строки и позиции символа в строке. Проще всего написать, что, мол, нифига не смыслю в программировании и вывалить все на форум на удачу в надежде на доброхотов. Попробуйте самостоятельно хоть что-то сделать, тем более, что методички у вас на руках, а там описывается примерный способ решения подобных задач. Если не получится - выкладывайте свои наработки, будем вместе править. А учиться вместо вас никто не собирается. |
17.12.2011, 00:19 | #4 (permalink) |
Новичок
Регистрация: 15.12.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
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. Правильно? |
17.12.2011, 18:24 | #5 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Когда записываете числа в файл, лучше использовать не write, а writeln, в этом случае каждое число будет записано с новой строки и вам не будет нужды их разделять. В вашем случае вы записываете в файл числа сплошной строкой, без разделителей, потом при попытке их прочитать считывается число, превышающее пределы, определенные форматом переменной и может вылететь ошибка.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
13.05.2012, 14:30 | #6 (permalink) |
Новичок
Регистрация: 10.11.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
помогите решить задачу на листбокс
1. В таблице А, состоящей из 8 элементов подсчитать количество положительных и отрицательных элементов. 2. Даны две таблицы А(8) и В(8). Сформировать таблицу С, содержащую те положительные элементы из А, которые есть в таблице В. Результат вывести. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|