IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> забыл паскаль напрочь - а ведь было время!)), пара задачек на массивы
сообщение
Сообщение #1


Гость






В годы светлой и безоблачной юности, когда компьютеры были в тысячу раз медленнее - а цветов на мониторе так и вовсе в мильоны раз меньше было - знавал я Паскаль как свои пять пальцев, а то и лучше.
Всякие там ТэЭсЭры мерзопакостные и прочие полезные штуки с пацанами клепали.
Жизнь была впереди и весь мир лежал у наших залитых соса-солой клавиш.

Потом настали крупные да твёрдые окна (как принято было тогда говорить... и как до сих пор некоторым оскомину не набило!?), глобальное зл.. ой, то бишь - глобальная сеть, линухи-подсолнухи и прочие знаковые хреновины нашего глобализованного и глубоко брендированного времени.

Прошли годы.
И попросила меня вчера девчушка милая - ну, мол, ты типа умный, кнопки нажимать умеешь, значит наверняка помочь сможешь. Задачки две, на паскале. Реши, мол, а?
Сами понимаете, дамам не отказывают ;)
Да и почему бы стариной не тряхнуть?

Тряхнул, называется.
Друзья! Я понимаю, что преподавателям надо что-то преподавать, кому-то переучиваться поздно, кому-то влом, кто-то от жизни оторван.. но чтобы настолько!?
Не очень врубаюсь, почему паскаль - и, вернее даже, ТОЛЬКО паскаль!!! - до сих пор требуют в университетах!?
Я ещё понимаю, лет эдак 10 назад, когда винда и инет только набирали обороты.
Но сейчас!? Какая польза от этого практическая?
Понимаю, да, основы программирования, стиля правильного и тд и тп... но... эх!
Зачем это всяким юристам-экономистам?
Лучше уж хмтл-ю учили бы их, ей 6огу, хоть какая-то польза могла бы быть.
А программирование, да без практики - на кой?
Крик души просто вырвался, не могу остановить.
Остаётся надеяться, что это не прочитает любимый в светлые годы (см. выше) тов. Калашников из Физтеха, который меня в своё время на данную тему просвещал... да и вообще никого обидеть не хочу smile.gif
Просто удивляюсь чуток.

Ну так вот.
Поставил я Паскаль - господи! лет эдак шесть его вообще не видел, не вспоминал. Полчаса пытался освоиться с когда-то родной, а нынче такой непривычной оболочкой.
Признаюсь, так и не удалось :p2:

А уж чтобы написать что-то!!!!!!!!!!!!!
НАРОД! это травма на всю жизнь.
Я, писавший когда-то на паскале чуть ли не лучше всех в своём городе, несколько минут потратил на написание хеллоу ворлд :o

В общем!
Друзья, выручайте, ежели кому не влом будет rolleyes.gif
Могу отблагодарить - к примеру, на php и тд накатать чего угодно, или ещё как...
После нескольких лет пэхапэ с экшен скриптом милый родимый паскаль уже, боюсь, понять заново не получится .. по крайней мере, это заняло бы много времени.
Ассемблер - и тот вспомнить проще, думаю.
Т.к. он особенный, а тут всё уже перемешалось.

Ладно, даже вот написал это всё - и то полегчало :D
А уж если поможет кто старику-склеротику - и вовсе ...!!!

Так. Вот они, задачки.

---1
Каждая из N компаний предоставила перечень из M машин разных моделей - для их приобретения В ЕДИНСТВЕННОМ (!) экземпляре.
Составить общий перечень необходимых моделей машин с указанием их кол-ва, расположив модели в порядке убывания потребности в них.

---2
Структура записи исходных данных:
{ Код предприятия | Название предприятия | Продукция | Произведено, ед. | Цена (ед.) }

2.1 Дать сведения об общем выпуске конкретного вида продукции (в натуральном выражении) и средней стоимости выпуска одним предприятием.
2.2 Дать сведения об общем выпуске продукции каждого вида продукции и о её средней цене.
2.3 Выдать список предприятий в порядке убывания стоимости произведённой продукции

---

Вот такие вот задачки.
Понимаю, что не на две минуты - но и сложного ничего нет smile.gif
Что меня сразу убило - это требование компилятора в секии var объявить длину массива :no:
Отвык я от таких дел! Сразу руки опустились.
На php, ясен пень, задача решается на раз плюнуть.
Но на паскале.. эх, ладно, уже повторяюсь. Хватит! ;)

Короче, удачи всем !!!
Если вдруг,... заранее спасибо!!!
Зайду ещё сюда днём да ближе к вечеру.

p.s. надеюсь, никого своим криком души не обидел.. давайте жить дружно и всё такое! просто очень удивился, .. а так, лет 10 назад сам лекции мог читал про это дело, хехе... как говорится, и на старуху, sh*t happens, и так далее
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Друзья, выручайте, ежели кому не влом будет 

Ну раз вас девушка попросила, то надо помочь smile.gif
чего-нибудь сейчас сделаю ...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


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.

Этот код только для чтения из файла данных... думаю что реализовать все остальное нет особого труда, все данные уже в динамическуом массиве, так что доделаете....


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Oleg_Z

Цитата
не ясно откуда брать эту потребность ...

С этим, как раз все ясно - нужно считать количество заказов на каждую модель и потом сортировать эти количества по убыванию. Чем больше модель заказывают - тем потребность выше :yes:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


ОК, а откуда брать количество заказов? :D rolleyes.gif :P


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


volvo, что-то здесб связанно с экономикой чую ;)
А везде где экономика пересекаетсяс программированием, там хаос и неразбериха имхо smile.gif

Имхо задание дано не точно ... (во всяком случае для меня)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 18:21
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name