![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]() ![]()
Сообщение
#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, то ноль тоже будет вычисляться... помогите плиииз... Паапрасил бы оформлять посты по-человечески. //Неизвестный Модератор |
|
|
![]()
Сообщение
#2
|
|
Immortal Сообщений: 523 Спасибо сказали: 35 раз ![]() |
Ну запихнуть в функцию не проблема, добавляется функция:
Код function CalcMedArValue(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; CalcMedArValye := Y/Z; end; Вместо всего расчета добавляется: Код Q := CalcMedArValue(S); Ну и из объявлений глобальных переменных можно видимо удалить Y, Z. Вроде они больше не используются. Ну а для ограничения ввода можно так: Добавляем в объвление глобальных переменных переменную var Ch: Char; И фрагмент: Код WriteLn('vvedite chisla'); repeat readln(x); write(F,x); until x=0; заменяем на Код WriteLn('vvedite chisla'); repeat ReadLn(X); Ch := 'N'; if X = 0 then begin WriteLn('Прервать ввод?'); Ch := ReadKey; if (Ch = 'Y') or (Ch = 'y') then Break; end; Write(F, X); until ((X = 0) and ((Ch = 'y') or (Ch = 'Y'))); Если ввести 0 как число будет задан вопрос - Прервать ввод? если нажать 'y' или 'Y' ввод прервется без записи 0 в файл. Любая другая клавиша - 0 записывается в файл и ввод чисел продолжается |
|
|
![]()
Сообщение
#3
|
|
![]() Newbie Сообщений: 31 Спасибо сказали: 0 раз ![]() |
Tervyn я тебе по гроб жизни обязан буду!!!!! огромное пасибо!!!!!!!!!!! Tervyn рулит!!!!
![]() |
|
|
![]()
Сообщение
#4
|
|
Immortal Сообщений: 523 Спасибо сказали: 35 раз ![]() |
Да мелочи)
|
|
|
![]()
Сообщение
#5
|
|
![]() Оранжевый Канцлер Тьмы Сообщений: 2 344 Спасибо сказали: 618 раз ![]() |
Цитата(Tervyn @ 18 Dec 2008, 21:38) Да мелочи) Мелочи мелочами, а думаешь куда он со следующими своими лабами прибежит? -------------------- I am the fury in your eyes. I am reason, I am vice.
Careful what you say You may regret it, Careful what you wish You just might get it. |
|
|
![]()
Сообщение
#6
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Да пусть бежит, пока ведет себя пристойно. Нам что, жалко что-ли ?
-------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#7
|
|
Immortal Сообщений: 523 Спасибо сказали: 35 раз ![]() |
Шайдар, ну разок помочь сдать лабы и получить зачет можно ведь? Ты же всегда на форуме таким не предвзятым выглядишь, а тут так четко прослеживается неприязнь к человеку. У меня были знакомые которые для двух последовательных циклов (не вложенных) заводили две переменные в программе, и не понимали почему одной можно обойтись. Ты бы их тоже осудил? А они учились по специальности ...ммм... не вспоню щас, но лабы по кафедральным предметам - паять микросхемы. Зачем им Паскаль? А зачет сдавать нужно... Да и потом - я же комментирую как и что делаю. Вот помню у меня был курс в универе - Теория Языков Программирования. И третья лаба из пяти была написать интерпретатор заданного языка программирования (не целиком, а только часть функций). Я вроде все правильно делал - а прога уходила в бесконечный цикл. Подхожу к преподу - так мол и так, а он на меня смотрит широко раскрытыми глазами и говорит - я не понимаю почему не работает, все вроде правильно. Препод асприрант был, и не из лучших. Я потратил три месяца, нашел ошибку (грамматика языка не верно была задана, а прога нормальная) и сдал лабу. Но я ведь с 10ти лет программированием увлекся, мне интересно было. Да и время было. А одногрупники скатывали прогу тупо и пытались сдавать. И они кстати действительно не заменили бы целочисленной деление на дробное. Только как такому преподу сдавать? Препод ведь не только принимать должен, но и помочь если все плохо. А не говорить что сам не понимает. Ситуации разные бывают...
|
|
|
![]()
Сообщение
#8
|
|
![]() Оранжевый Канцлер Тьмы Сообщений: 2 344 Спасибо сказали: 618 раз ![]() |
Я в данный момент веду как раз то, о чем он просит. Я вижу своих студентов, вижу их глаза, в которых читается "да клал я на твои объяснения, потом скатаю текст и сдам без защиты", и так действительно получается.
У меня полгруппы ничего рассказать на защите не могут, хотя я пошагово объяснял ВООБЩЕ ВСЕ лабораторные - от них требовалось только слегка их модифицировать! Потому терпеть не могу такого вот "решите мне задачу плз". Ну решил ты ему задачу, а польза-то где? Лучше б он ночь посидел почитал учебник по Паскалю, но написал бы эту лабу сам - не такая уж она и страшная. -------------------- I am the fury in your eyes. I am reason, I am vice.
Careful what you say You may regret it, Careful what you wish You just might get it. |
|
|
![]()
Сообщение
#9
|
|
Immortal Сообщений: 523 Спасибо сказали: 35 раз ![]() |
Шайдар, если предмет не является профилирующим и дальше не будет использоваться так почему бы не помочь? Лаба не страшная когда знаешь как ее делать, а если не знаешь... Может ему не повезло с преподом?
![]() P.S.: И вообще не хочу спорить ибо лень |
|
|
![]()
Сообщение
#10
|
|
![]() Оранжевый Канцлер Тьмы Сообщений: 2 344 Спасибо сказали: 618 раз ![]() |
Цитата(Tervyn @ 18 Dec 2008, 23:48) Шайдар, если предмет не является профилирующим и дальше не будет использоваться так почему бы не помочь? Лаба не страшная когда знаешь как ее делать, а если не знаешь... Может ему не повезло с преподом? ![]() Предмет действительно не профильный, и именно поэтому я позволяю им сдавать верные решения без защиты - на тройку. Я понимаю, и они понимают что я понимаю что они не сами делали - но все молчат. Воот.. Но это не мешает мне нелюбить таких вот халявщиков. По поводу.. Те, кому интересно, кто слушает - у тех не возникает проблем почему-то) Все-таки желание учиться тоже играет роль, я не могу напрямую вставить им свои мозги. Если чел тупо не обращает внимания на предмет - ему уже ничем не поможешь. -------------------- I am the fury in your eyes. I am reason, I am vice.
Careful what you say You may regret it, Careful what you wish You just might get it. |
|
|
![]()
Сообщение
#11
|
|
Immortal Сообщений: 523 Спасибо сказали: 35 раз ![]() |
Если не обращает на предмет, то да. А если "повезло" с преподом? Ни разу не сталкивался с преподами которые не знают предмет? У которых на лекциях надо исправлять ошибки, которые не могут ответить ни на один вопрос? Ты просто сам ведешь пары, потому у тебя сразу мысли что студент косил и сам виноват. А я вспоминаю как мне читали лекции и вели лабы, и первая мысль - может препод не объяснил нормально. Потому и помог малость.
P.S.: хорошо мы нафлудили ![]() ![]() |
|
|
![]()
Сообщение
#12
|
|
![]() 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); она "ругается", ка это делать? пробовал переменной присвоить значение ф-и, но чёт не получается.... |
|
|
![]()
Сообщение
#13
|
|
Immortal Сообщений: 523 Спасибо сказали: 35 раз ![]() |
Можно попробовать так (должно сработать):
Код WriteLn('srednee ar: ', call(s):3:2); если не получиться то так Код Q := Call(S);
WriteLn('srednee ar: ', Q: 3: 2); |
|
|
![]()
Сообщение
#14
|
|
![]() Newbie Сообщений: 31 Спасибо сказали: 0 раз ![]() |
спасибо, но я сам допёр до второго варианта
![]() мне уже неудобно спрашивать, но у моей одногрупницы тож пероблемы с очередями и деревьями.. у деревьев: поиск максимального ключа в дереве (просто функцию нахождения максимального ключа) а вот очереди уже сложнее... Сформировать файл из символов и с помощью очереди за один просмотр файла напечатать элементы файла в следующем порядке: сначала все сим-волы, отличные от знаков препинания и цифр, затем все знаки препинания и наконец – все цифры, сохраняя исходный порядок в каждой из этих групп символов. если тебя не затруднит помоги... Добавлено ([mergetime]1229677912[/mergetime]): а на счёт преподов ничего плозого нихочу говорить, но иногда препод ведёт себя словно он бог, вершитель судьбы и т.д. если у них какие-то свои личные проблемы, то на кого это всё выливается??? конечно на учеников... но опять же я не обобщаю всех преподавателей, встречаются и хорошие, честные и порядочные... |
|
|
![]()
Сообщение
#15
|
|
Immortal Сообщений: 1 664 Спасибо сказали: 30 раз ![]() |
Думаю вряд ли Tervyn согласится делать лабы того же типа - он ведь откоментировал все свои действия - в принципе вы можете модифицировать его программы для лаб своей одногрупницы.А вообще не красиво получается - так может получиться, что ему придется для всей группы вашей лабы делать
![]() P.S. Вот реально лаба очень похожа... -------------------- |
|
|
![]()
Сообщение
#16
|
|
Newbie Сообщений: 8 Спасибо сказали: 0 раз ![]() |
друзья у меня к вам просьба: динамику вообще почти не шарю. помогите чем могёте: Используя стек, напечатать содержимое текстового файла, выписывая символы каждой его строки в обратном порядке.
|
|
|
![]()
Сообщение
#17
|
|
good news, everyone! Сообщений: 918 Спасибо сказали: 93 раза ![]() |
Динамика - это раздел физики
-------------------- этъя опять
|
|
|
![]()
Сообщение
#18
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
Монца, учим матчасть
|
|
|
![]() ![]() |
Текстовая версия | Сейчас: 30 June 2025 - 12:06 |
Copyright by Алексей Крючков
![]() Programming by Degtyarev Dmitry |
|