|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.11.2016, 13:12 | #1 |
Пользователь
Регистрация: 09.11.2015
Сообщений: 14
|
найти сумму чисел которые делятся на 3 на паскале в списке и занести значение в файл
type
TInfo = integer; Tlist = ^Node; Node = record info: TInfo; next: Tlist; end; procedure Init(var L: Tlist); // выделяем место для списка НУЖНА begin L := nil; end; function Empty(L: Tlist): boolean; // проверка на пустоту НУЖНА begin result := L = nil; end; procedure Add_after_Node(var Pnode: Tlist; new_elem: TInfo); // НУЖНА добавляем элемент в список var p: Tlist; begin new(p); p^.info := new_elem; p^.next := Pnode^.next; Pnode^.next := p; end; procedure Add_to_head(Var list: Tlist; new_elem: TInfo); // добавление элемента в голову Var p: Tlist; begin new(p); p^.info := new_elem; p^.next := list; list := p; end; Procedure Print(list: Tlist); // печатает список на экран Var p: Tlist; begin p := list; while p <> nil do begin write(p^.info, ' '); p := p^.next; end; writeln; end; Procedure Add_elem(var L, tail: Tlist; x: TInfo); //добавляет элемент в список begin if Empty(L) then begin Add_to_head(L, x); tail := L end else begin Add_after_Node(tail, x); tail := tail^.next end; end; procedure Create (var L: Tlist; file_name: string); //НУЖНА из файла берет элементы и доб. в.список. var t: Textfile; x: TInfo; tail: Tlist; //tail - указатель на последний элемент списка begin Init(L); // выделяет место AssignFile(t, file_name); Reset(t); while not eof(t) do begin read(t, x); // читает элементы Add_elem(l,tail,x); end; closeFile(t) end; #procedure suum(L:Tlist; var Lodd,leven: Tlist); //Lodd,Leven - указатели на головы списка Var tailodd,taileven:Tlist; //Данная процедура создает списки (один - с четными, другой - с нечетными элем) y:Tlist; begin result := 0; y:=l^.next; Init (Lodd); while y<>nil do begin if (y^.info)mod 3=0 then begin result:=result+y^.info; Add_elem(Lodd,tailodd,y^.info) end else Add_elem(Leven,taileven,y^.info); y:=y^.next; end end; # procedure Create_odd_even (L:Tlist; var Lodd,Leven: Tlist); //Lodd,Leven - указатели на головы списка Var tailodd,taileven:Tlist; //Данная процедура создает списки (один - с четными, другой - с нечетными элем) p:Tlist; begin p:=l; Init (Lodd); Init (Leven); while p<>nil do begin if (p^.info)mod 3=0 then Add_elem(Lodd,tailodd,p^.info) else Add_elem(Leven,taileven,p^.info); p:=p^.next; end end; procedure Clear(var L: Tlist); // очищает список НУЖНА var p:Tlist; begin while l<>nil do begin p:=l; l:=l^.next; dispose(p) end; end; procedure Print_to_file(Lodd,leven: Tlist; file_name: string); // НУЖНА var p: Tlist; t: Textfile; Procedure Print_list (l:Tlist); var p:Tlist; begin p:=l; while p<>nil do begin write(t,p^.info,' '); p:=p^.next end; writeln(t) end; begin AssignFile(t, file_name); rewrite(t); writeln(t,'нечетные числа:'); Print_list(lodd); writeln(t,'четные числа'); Print_list(leven); closeFile(t); end; Var lodd ,leven,l:Tlist; begin Create(l,'Numbers.txt'); Print(l); Create_odd_even(l,Lodd,Leven); suum(l,Lodd,Leven); Print(lodd); Print(leven); Print_to_file(lodd,leven,'Result.tx t'); Clear(l); Clear(lodd); Clear(leven) end. Последний раз редактировалось Вячик; 27.11.2016 в 21:05. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дано 15 целых чисел от 20 до 35. Определить сумму тех из них, которые не делятся на 5 | Umka_Kitv | Помощь студентам | 2 | 13.03.2013 14:32 |
как вывести числа которые делятся на 7? | Devil669 | Общие вопросы C/C++ | 12 | 18.02.2013 00:32 |
вычислить все числа до n которые равны сумме своих делителей (совершенные числа)//не могу найти ошибку в своей програме на паскале | games_vandal | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 22.12.2012 14:24 |
цикл for to do, или как отобразить сумму всех чётных трёхзначных чисел которые делятся на 7 (Delphi 6) | Lorden | Помощь студентам | 9 | 23.12.2008 18:50 |