IPB

Здравствуйте, гость ( Вход | Регистрация )

> стеки и очереди в паскале (доделать)
Palpalich
сообщение 18 Dec 2008, 18:23
Сообщение #1

Newbie
Сообщений: 31
Спасибо сказали: 0 раз




люди помогите дорешать задачу:
Сформировать файл из натуральных чисел. Разработать функцию, вычисляющую среднее арифметическое элементов списка, построенного из элементов файла.
CODE
program StackDemo;
uses crt;
const
AFileName = 'file.txt';
type
PIntStack = ^TIntStack;
TIntStack = record
Data: Integer;
Next: PIntStack;
end;
stek= PIntStack;
procedure Init(var AStack: PIntStack);
begin
AStack := nil;
end;
procedure Done(var AStack: PIntStack);
var
P: PIntStack;
begin
while (AStack <> nil) do
begin
P := AStack^.Next;
dispose(AStack);
AStack := P;
end;
end;
procedure Push(AData: Integer;var AStack: PIntStack);
var
P: PIntStack;
begin
P := nil;
New(P);
if (P = nil) then Exit;
P^.Data := AData;
P^.Next := AStack;
AStack := P;
end;
function Pop(var AData: Integer; var AStack: PIntStack): Boolean;
var
P: PIntStack;
begin
if (AStack = nil) then
begin
Pop := False;
Exit;
end;
P := AStack^.Next;
AData := AStack^.Data;
dispose(AStack);
AStack := P;
Pop := True;
end;
var
F: file of integer;
S: PIntStack;
X, Z, Y: Integer; q:real;
begin clrscr;
Assign(F, 'file.txt');
rewrite(F);
WriteLn('vvedite chisla');
repeat
readln(x);
write(F,x);
until x=0;
close(F);
Assign(F, 'file.txt');
Reset(F);
while not Eof(F) do
begin
Read(F, X);
Push(X, S);
end;
Close(F);
Z := 0;
Y := 0;
while Pop(X, S) do
begin
Y := Y + X;
Z := Z + 1;
end;
q := Y/Z;
WriteLn('srednee ar: ', q);
done(s);
readkey;
end.



в принципе задача решена, но не доделана... мне нужно заталкать вот это
CODE
Z := 0;
Y := 0;
while Pop(X, S) do
begin
Y := Y + X;
Z := Z + 1;
end;
q := Y/Z;

в процедуру, т.к. в условии сказано.. и ещё нужно определить конец ввода, т.к. если сделать его =0, то ноль тоже будет вычисляться... помогите плиииз...

Паапрасил бы оформлять посты по-человечески. //Неизвестный Модератор
Go to the top of the pageAdd Nick
 
+Quote Post
 
Start new topic
Ответов
Palpalich
сообщение 19 Dec 2008, 09:35 (Сообщение отредактировал Chrono Syndrome - 19 Dec 2008, 11:53)
Сообщение #2

Newbie
Сообщений: 31
Спасибо сказали: 0 раз




на самом деле нам динамику плохо объяняли, точнее вообще о ней речи не было.... а препод - это люди настроение, захотят помогут, а не захотят... пошлют куда подальше... поэтому я и братился нафорум, но я задачи "неотредактироваными" не здаю, сначала разбираюсь, а потом уже....

Добавлено ([mergetime]1229668534[/mergetime]):
Tervyn помоги плиз с езё одной просьбой, если не затруднит....
Код
program StackDemo;
uses crt;
const
AFileName = 'file.txt';
type
PIntStack = ^TIntStack;
TIntStack = record
  Data: Integer;
  Next: PIntStack;
end;
stek= PIntStack;
procedure Init(var AStack: PIntStack);
begin
AStack := nil;
end;
procedure Done(var AStack: PIntStack);
var
P: PIntStack;
begin
while (AStack <> nil) do
begin
  P := AStack^.Next;
  dispose(AStack);
  AStack := P;
end;
end;
procedure Push(AData: Integer;var AStack: PIntStack);
var
P: PIntStack;
begin
P := nil;
New(P);
if (P = nil) then Exit;
P^.Data := AData;
P^.Next := AStack;
AStack := P;
end;
function Pop(var AData: Integer; var AStack: PIntStack): Boolean;
var
P: PIntStack;
begin
if (AStack = nil) then
begin
  Pop := False;
  Exit;
end;
P := AStack^.Next;
AData := AStack^.Data;
dispose(AStack);
AStack := P;
Pop := True;
end;
function call(var AStack: PIntStack): real;
var
 X, Y, Z: Integer;
begin
Z := 0;
Y := 0;
while Pop(X, AStack) do
begin
   Y := Y + X;
   Z := Z + 1;
end;
call  := Y/Z;
end;
var
  ch:char;
F: file of integer;
S: PIntStack;
X: Integer;
begin  clrscr;
Assign(F, 'file.txt');
rewrite(F);
WriteLn('vvedite chisla (nol - okonchanie vvoda)');
repeat
ReadLn(X);
Ch := 'N';
if X = 0 then
begin
  WriteLn('hotite zakonchit vvod? (y/n)');
  Ch := ReadKey;
  if (Ch = 'Y') or (Ch = 'y') then
    Break;
end;
Write(F, X);
until ((X = 0) and ((Ch = 'y') or (Ch = 'Y')));
close(F);
Assign(F, 'file.txt');
Reset(F);
while not Eof(F) do
begin
  Read(F, X);
  Push(X, S);
end;
 Close(F);
 WriteLn('srednee ar: ', call(s));
 done(s);
 readkey;
end.

она выводит число не "чистое" , т.е. если сделать call(s:3:2); она "ругается", ка это делать? пробовал переменной присвоить значение ф-и, но чёт не получается....
Go to the top of the pageAdd Nick
 
+Quote Post

Сообщений в этой теме
- Palpalich   стеки и очереди в паскале (доделать)   18 Dec 2008, 18:23
- - Tervyn   Ну запихнуть в функцию не проблема, добавляется фу...   18 Dec 2008, 19:27
- - Palpalich   Tervyn я тебе по гроб жизни обязан буду!!...   18 Dec 2008, 19:35
- - Tervyn   Да мелочи)   18 Dec 2008, 19:38
|- - Shaidar Haran   Цитата(Tervyn @ 18 Dec 2008, 21:38)Да мелочи)...   18 Dec 2008, 20:12
- - Chrono Syndrome   Да пусть бежит, пока ведет себя пристойно. Нам что...   18 Dec 2008, 20:32
- - Tervyn   Шайдар, ну разок помочь сдать лабы и получить заче...   18 Dec 2008, 20:39
- - Shaidar Haran   Я в данный момент веду как раз то, о чем он просит...   18 Dec 2008, 21:05
- - Tervyn   Шайдар, если предмет не является профилирующим и д...   18 Dec 2008, 21:48
|- - Shaidar Haran   Цитата(Tervyn @ 18 Dec 2008, 23:48)Шайдар, ес...   18 Dec 2008, 21:54
- - Tervyn   Если не обращает на предмет, то да. А если "п...   18 Dec 2008, 22:12
- - Palpalich   на самом деле нам динамику плохо объяняли, точнее ...   19 Dec 2008, 09:35
- - Tervyn   Можно попробовать так (должно сработать): КодWrite...   19 Dec 2008, 10:01
- - Palpalich   спасибо, но я сам допёр до второго варианта.. зачё...   19 Dec 2008, 12:11
- - Dofur   Думаю вряд ли Tervyn согласится делать лабы того ж...   19 Dec 2008, 20:09
- - gilex   друзья у меня к вам просьба: динамику вообще почти...   26 Dec 2008, 00:43
- - Монца   Динамика - это раздел физики   26 Dec 2008, 10:27
- - gamecreator   Монца, учим матчасть   26 Dec 2008, 19:13


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 26 February 2026 - 18:57
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика