![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Ветеран-склеротик |
![]()
Сообщение
#1
|
Гость ![]() |
В годы светлой и безоблачной юности, когда компьютеры были в тысячу раз медленнее - а цветов на мониторе так и вовсе в мильоны раз меньше было - знавал я Паскаль как свои пять пальцев, а то и лучше.
Всякие там ТэЭсЭры мерзопакостные и прочие полезные штуки с пацанами клепали. Жизнь была впереди и весь мир лежал у наших залитых соса-солой клавиш. Потом настали крупные да твёрдые окна (как принято было тогда говорить... и как до сих пор некоторым оскомину не набило!?), глобальное зл.. ой, то бишь - глобальная сеть, линухи-подсолнухи и прочие знаковые хреновины нашего глобализованного и глубоко брендированного времени. Прошли годы. И попросила меня вчера девчушка милая - ну, мол, ты типа умный, кнопки нажимать умеешь, значит наверняка помочь сможешь. Задачки две, на паскале. Реши, мол, а? Сами понимаете, дамам не отказывают ;) Да и почему бы стариной не тряхнуть? Тряхнул, называется. Друзья! Я понимаю, что преподавателям надо что-то преподавать, кому-то переучиваться поздно, кому-то влом, кто-то от жизни оторван.. но чтобы настолько!? Не очень врубаюсь, почему паскаль - и, вернее даже, ТОЛЬКО паскаль!!! - до сих пор требуют в университетах!? Я ещё понимаю, лет эдак 10 назад, когда винда и инет только набирали обороты. Но сейчас!? Какая польза от этого практическая? Понимаю, да, основы программирования, стиля правильного и тд и тп... но... эх! Зачем это всяким юристам-экономистам? Лучше уж хмтл-ю учили бы их, ей 6огу, хоть какая-то польза могла бы быть. А программирование, да без практики - на кой? Крик души просто вырвался, не могу остановить. Остаётся надеяться, что это не прочитает любимый в светлые годы (см. выше) тов. Калашников из Физтеха, который меня в своё время на данную тему просвещал... да и вообще никого обидеть не хочу ![]() Просто удивляюсь чуток. Ну так вот. Поставил я Паскаль - господи! лет эдак шесть его вообще не видел, не вспоминал. Полчаса пытался освоиться с когда-то родной, а нынче такой непривычной оболочкой. Признаюсь, так и не удалось :p2: А уж чтобы написать что-то!!!!!!!!!!!!! НАРОД! это травма на всю жизнь. Я, писавший когда-то на паскале чуть ли не лучше всех в своём городе, несколько минут потратил на написание хеллоу ворлд :o В общем! Друзья, выручайте, ежели кому не влом будет ![]() Могу отблагодарить - к примеру, на php и тд накатать чего угодно, или ещё как... После нескольких лет пэхапэ с экшен скриптом милый родимый паскаль уже, боюсь, понять заново не получится .. по крайней мере, это заняло бы много времени. Ассемблер - и тот вспомнить проще, думаю. Т.к. он особенный, а тут всё уже перемешалось. Ладно, даже вот написал это всё - и то полегчало :D А уж если поможет кто старику-склеротику - и вовсе ...!!! Так. Вот они, задачки. ---1 Каждая из N компаний предоставила перечень из M машин разных моделей - для их приобретения В ЕДИНСТВЕННОМ (!) экземпляре. Составить общий перечень необходимых моделей машин с указанием их кол-ва, расположив модели в порядке убывания потребности в них. ---2 Структура записи исходных данных: { Код предприятия | Название предприятия | Продукция | Произведено, ед. | Цена (ед.) } 2.1 Дать сведения об общем выпуске конкретного вида продукции (в натуральном выражении) и средней стоимости выпуска одним предприятием. 2.2 Дать сведения об общем выпуске продукции каждого вида продукции и о её средней цене. 2.3 Выдать список предприятий в порядке убывания стоимости произведённой продукции --- Вот такие вот задачки. Понимаю, что не на две минуты - но и сложного ничего нет ![]() Что меня сразу убило - это требование компилятора в секии var объявить длину массива :no: Отвык я от таких дел! Сразу руки опустились. На php, ясен пень, задача решается на раз плюнуть. Но на паскале.. эх, ладно, уже повторяюсь. Хватит! ;) Короче, удачи всем !!! Если вдруг,... заранее спасибо!!! Зайду ещё сюда днём да ближе к вечеру. p.s. надеюсь, никого своим криком души не обидел.. давайте жить дружно и всё такое! просто очень удивился, .. а так, лет 10 назад сам лекции мог читал про это дело, хехе... как говорится, и на старуху, sh*t happens, и так далее |
![]() ![]() |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Цитата Друзья, выручайте, ежели кому не влом будет Ну раз вас девушка попросила, то надо помочь ![]() чего-нибудь сейчас сделаю ... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Altair |
![]()
Сообщение
#3
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
1 задача.
Не сказано, откуда берутся исходные данные... Может из файла может еще откуда... Не сказано, предоставляют ли все компании одинаковое количество моделей. Не сказано что значит составить список необходимых моделей. Дальше - Цитата Составить общий перечень необходимых моделей машин с указанием их кол-ва Поскольку ничего не сказано, предположим, что у разных компаний есть одинаковые модели ...(иначе какое может быть количество, ведь сказано, что для приобретения в ед. экз.?) Цитата расположив модели в порядке убывания потребности в них. неясно, откуда брать эту потребность ... вероятно сортировка, только по какому признаку? На основании таких скудных данных о задаче, можно предположить следующее задание: Дано: 1. Массив Код array [1..N, 1..M] of name: string; {название модели} все компании предоставляют одинаковое количество моделей.2. Файл в котором в порядке уменьшения необходимости моделей написаны названия моделей. P.S.: массив вводится вручную, текстовый файл с указанием необходимости должен быть создан. На каждой строчке должно быть имя модели. Требуется записать в текстовый файл перечень моделей в порядке необходимости с указанием количество моделей. Если так пойдет (а это на 100% соответствует условию задачи, ни один пункт не противоречит условию!) то вот программа: Код Type TELEM = record name: string; kol:word end; ArrType = array[1..1,1..1] of TELEM; Var Arr:^ArrType; i,j,N,M:word; path:string; f:text; r:text; begin write('ўўҐ¤ЁвҐ Є®«ЁзҐбвў® Є®¬Ї Ё©, ЇаҐ¤®бв ўЁўиЁе ЇҐаҐзЁ ¬®¤Ґ«Ґ© (N): '); readln(N); write('ўўҐ¤ЁвҐ Є®«ЁзҐбўв® ЇаҐ¤®бв ў«Ґле ¬®¤Ґ«Ґ©: '); readln(m); GetMem(arr,N*M*SizeOf(TELEM)); {ўл¤Ґ«ҐЁҐ Ї ¬пвЁ Ї®¤ и ¤Ё ¬Ёз. ¬ ббЁў} For i:=1 to n do for j:=1 to m do begin writeln('Є®¬Ї Ёп ®¬Ґа ',i); write('ўўҐ¤ЁвҐ Ё¬п ',j,' ¬®¤Ґ«Ё:');readln(arr^[i,j].name); write('ўўҐ¤ЁвҐ Є®«ЁзҐбўв®: '); readln(arr^[i,j].kol) end; repeat write('ўўҐ¤ЁвҐ Ё¬п д ©« б ¤ л¬Ё ® Ґ®Ўе®¤Ё¬®бвЁ ¬®¤Ґ«Ґ©: '); readln(path); assign(f,path); {$I-}reset(f) {$I+} until IOResult=0; Write('‚ўҐ¤ЁвҐ Ё¬п д ©« ¤«п б®еа ҐЁп १г«мв в®ў: '); readln(path); assign(r,path); rewrite(r); while NOT EOF(F) do begin readln(f,path); for i:=1 to n do for j:=1 to m do If arr^[i,j].name=path then writeln(r,'Є®¬Ї Ёп ®¬Ґа: ',i,' ',arr^[i,j].name,' ',arr^[i,j].kol); end; close(f); close(r); FreeMem(arr,N*M*SizeOf(TELEM)); end. Обратите внимание что массивы и в паскале динамические ;) :) 2 задача. По сути это БД. Для удобства пусть это все хранится в файле со следующей структурой: <Код_предприятия><пробел> <Название_предприятия><пробел> <Продукция><пробел> <Произведено_ед.><пробел> <Цена (ед.)> где <прбел> Это новая строка :lol: :D Где <Код_предприятия> - целое без знака <Название_предприятия> - строка <Продукция> - строка <Произведено_ед.> и <Цена (ед.)> - целое без знака. Код Type TELEM = record KOD:word; Name:string[30]; prod:string[30]; kol:word; zena:word end; ArrType = array[1..1] of TELEM; Var Arr:^ArrType; s:string; f:text; kolstr,i:word; begin repeat write('ўўҐ¤ЁвҐ Ё¬п д ©« б Ёб室묨 ¤ л¬Ё: '); readln(s); assign(f,s); {$I-} reset(f) {$I+} Until IOResult=0; While not EOF(F) do begin readln(f,s); inc(kolstr) end; {Ї®¤бзҐв Є®«-ў бва®Є ў д ©«Ґ} Reset(F); {ЇҐаҐ®вЄалвЁҐ, гЄ § ⥫м д ©« 1} kolstr:=round(kolstr/5); GetMem(arr,kolstr*SizeOf(TELEM)); i:=1; while not eof(f) do begin readln(f,arr^[i].KOD); readln(f,arr^[i].Name); readln(f,arr^[i].prod); readln(f,arr^[i].kol); readln(f,arr^[i].zena); inc(i); end; close(f); { For i:=1 to kolstr do writeln(arr^[i].KOD,' ',arr^[i].Name, ' ',arr^[i].prod,' ',arr^[i].kol,' ', arr^[i].zena);} Freemem(arr,kolstr*SizeOf(TELEM)); end. Этот код только для чтения из файла данных... думаю что реализовать все остальное нет особого труда, все данные уже в динамическуом массиве, так что доделаете.... -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Oleg_Z
Цитата не ясно откуда брать эту потребность ... С этим, как раз все ясно - нужно считать количество заказов на каждую модель и потом сортировать эти количества по убыванию. Чем больше модель заказывают - тем потребность выше :yes: |
Altair |
![]()
Сообщение
#5
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
ОК, а откуда брать количество заказов? :D
![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Oleg_Z
Цитата Каждая из N компаний предоставила перечень из M машин разных моделей - для их приобретения В ЕДИНСТВЕННОМ (!) экземпляре. Если модель X присутствует в списке из M машин (предоставленном компанией Y), количество заказов на эту модель увеличивается... Вся проблема - как представлять этот самый список из M машин... Я думаю, что раз в единственном экземпляре - неплохо бы задействовать множества... Итак, имеем: Код Type machineType = (model_1, model_2, ..., model_M); modelSet = set of machineType; const modelName: Array[machineType] of string = ('machine_name_01', 'machine_name_02', ... 'machine_name_M'); var Order: Array[1 .. n{кол-во компаний}] of modelSet; Count: Array[machineType] Of integer; count_index: array[1 .. m] of machineType; а потом идем по Order и проверяем, сколько раз в нем встречается модель model_1, model_2, и т.д. Результаты - записываем в Count... А потом сортируем Count по убыванию (вместе с переформированием Count переформируем также count_index) и печатаем: Код for i := low(machineType) to high(machine_type) Do if Count > 0 Then WriteLn( succ(ord(i)), ' - ', modelName[count_index[Ord(i)]], ' - ', count[i] ); Все просто ... :P |
Altair |
![]()
Сообщение
#7
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
volvo, что-то здесб связанно с экономикой чую ;)
А везде где экономика пересекаетсяс программированием, там хаос и неразбериха имхо ![]() Имхо задание дано не точно ... (во всяком случае для меня) -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 25.07.2025 11:50 |