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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2009, 16:49   #1
limp
 
Регистрация: 03.04.2009
Сообщений: 3
По умолчанию Задача по Паскалю

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

Пётр в течении месяца каждый раз вернувшись из леса записывал сколько находил боровиков(Grib1) ,подберёзовиков(Grib2) и лисичек(Grib3). Иногда он ходил в лес несколько раз в день.

Напишите программу которая:
1)Сосчитала бы кол-во собраемых грибов(по видам,т.е.Grib1 Grib2 Grib3 ) каждый день.
2) Установила бы день в который найдено наибольше кол-во грибов и сколько их найдено в тот день.

Начальные данные записаны в .txt файл U1.txt. В первой строчке записано кол-во походов за грибами n (1<=n<=100). Далее представленны данные о грибах. Одной строчке присвоен один поход за грибами. В ней записано четыре числа: номер дня d (1<=d<=31), кол-во собранных грибов Grib1, Grib2, Grib3. Пётр записывая данные в файл не придерживался последовательности.

Результат должен быть отражён в текстовом файле U1rez.txt . Каждому дню присваивается 1 строчка. Дни должны выстраиваться в порядке увеличения. Необходимо отражать только те дни,когда был найден хоть 1 гриб. Сначала указывается номер дня,далее сколько за тот день было собрано грибов Grib1, Grib2, Grib3.(если какого-то вида гриба не найдено то печается ноль.) В последней строчке отражается 2 числа: номер дня в который собрано больше всего грибов и кол-во грибов собранных в тот же день.(если есть несколько таких дней то надо отображать день ,номер которого меньше )

Указания:
- напишите функцию для нахождения номера дня в который собранно больше всего грибов
- напишите процедуру для отображения списка собранных грибов по дням


U1.txt

11
2 8 4 0
3 1 0 9
1 2 3 4
5 4 14 2
2 4 4 4
3 0 0 0
15 25 45 13
28 13 13 13
16 2 0 2
16 5 15 25
3 4 44 444





U1rez.txt

1 2 3 4
2 12 8 4
3 5 44 453
5 4 14 2
15 25 45 13
16 7 15 27
28 13 13 13
3 502
limp вне форума Ответить с цитированием
Старый 03.04.2009, 17:03   #2
Veselyn
Форумчанин
 
Аватар для Veselyn
 
Регистрация: 29.01.2009
Сообщений: 175
По умолчанию

Вам нужно написать программу с нуля?
Все люди делятся на 10 типов: те, кто понимают двоичную систему счисления и те, кто нет.
Veselyn вне форума Ответить с цитированием
Старый 03.04.2009, 17:16   #3
limp
 
Регистрация: 03.04.2009
Сообщений: 3
По умолчанию

К сожалению да..
limp вне форума Ответить с цитированием
Старый 13.04.2009, 03:46   #4
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
Радость

Код:
program Pascal_U1;

uses
    SysUtils;

var
    f_in, f_out: Text;
    arr: array [1..31, 1..4] of Integer;
    n, max: Integer;
    d, gr1, gr2, gr3: Integer;

begin
    // считаем все с входного файла в массив
    AssignFile(f_in, 'U1.txt');
    Reset(f_in);
    Read(f_in, n);  //количество походов
    while n > 0 do
        begin
        Readln(f_in, d, gr1, gr2, gr3);
        if (gr1 + gr2 + gr3) > 0 then
            begin
            arr[d,1] := d;              //день
            arr[d,2] := arr[d,2] + gr1; //гриб 1
            arr[d,3] := arr[d,3] + gr2; //гриб 2
            arr[d,4] := arr[d,4] + gr3; //гриб 3
            end;
        n := n-1;
        end;
    CloseFile(f_in);

    //работаем с выходом    
    AssignFile(f_out, 'U1rez.txt');
    Rewrite(f_out);
    max := 0;
    for n := 1 to 31 do     //записываем каждый день
        begin
        if arr[n,1] = 0 then
            continue;
        Writeln(f_out, arr[n,1], arr[n,2], arr[n,3], arr[n,4]);

        if (arr[n,2] + arr[n,3] + arr[n,4]) > max then  //проверяем на сумму
            begin
            max := arr[n,2] + arr[n,3] + arr[n,4];
            d := arr[n,1];    //запоминаем минимальный день
            end;
        end;
    Writeln(f_out, d, max); //записываем день и сумму в конец файла
    CloseFile(f_out);
end.

работает верно - это проверено, а по выводу - пробелы сам поставишь, и подправишь, что не понравится. единственное входной файл рядом положи.
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума Ответить с цитированием
Старый 13.04.2009, 12:59   #5
limp
 
Регистрация: 03.04.2009
Сообщений: 3
По умолчанию

Спасибо большое!Очень помогли!
limp вне форума Ответить с цитированием
Старый 13.04.2009, 14:01   #6
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
Подмигивание

да незачто, можешь обращаться
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по Паскалю. spankyham Помощь студентам 3 31.03.2009 23:34
Задача По Паскалю! Sergeo_89 Помощь студентам 24 28.01.2009 18:07
Задача по паскалю (строки). front Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2008 12:21
задача по паскалю poluprogramist Помощь студентам 2 21.05.2008 21:44