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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 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.
Вячик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано 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