Форум «Всё о Паскале» _ Задачи _ Список Минимальных цен
Автор: Таблетка_Счастья 23.11.2008 16:31
Помогите пожалуйста решить задачу..Решила 9ть, а последнюю не могу (( Уже неделю бьюсь над ней (( Никак не получается..
Имеются сведения о названиях и ценах на n=12 видов товаров по m=10 магазинам. Требуется составить список пяти магазинов, имеющих минимальные цены по заданному виду товара. Список должен включать номер магазина, название и цену выставленного товара. Магазины в списке расположить в порядке возрастания товара..
Я Даже массив не могу сформировать (( Нужно до завтра (((
Тут будет не один массив, а два. 1. одномерный массив названий товаров: array [1..12] of string; 2. двумерный массив цен: array [1..10,1..12] of real
Заполни их, а потом ищи минимальные цены.
Автор: Таблетка_Счастья 23.11.2008 17:16
мы стринг не проходили string
Автор: Lapp 23.11.2008 17:25
Цитата(Таблетка_Счастья @ 23.11.2008 13:16)
мы стринг не проходили string
О-о! А как ты тогда рассчитываешь задавать названия? Скажи.. я просто даже не знаю..
Добавлено через 3 мин. Ты уверена, что не проходили?
Автор: Unconnected 23.11.2008 20:29
А заполнять надо случайным образом или с клавиатуры?
Автор: Lapp 23.11.2008 20:34
Цитата(Unconnected @ 23.11.2008 16:29)
А заполнять надо случайным образом или с клавиатуры?
Названия случайным образом? Я начал было делать, сделал ввод из файла обоих массивов, но тут леди странно высказалась про строки, а потом и вовсе пропала . Ну, ее дело..
Автор: Unconnected 23.11.2008 20:37
Ну почему,можно сделать массив с названиями...и случайным образом из него заполнить) Просто я уже сделал фактически и попробовал заполнить с клавиатуры...долгое это занятие
Автор: Lapp 23.11.2008 20:44
Цитата(Unconnected @ 23.11.2008 16:37)
Просто я уже сделал фактически и попробовал заполнить с клавиатуры...долгое это занятие
Погоди, я тебе дам чтение ..
Вот:
const n=12; m=10;
var Goods: array[1..n]of string; Price: array[1..m,1..n]of real; Cheep: set of 1..10; i,j: integer; f: text;
begin Assign(f,'goods.txt'); ReSet(f); for i:=1 to n do ReadLn(f,Goods[i]); Close(f); Assign(f,'price.txt'); ReSet(f); for i:=1 to n do begin for j:=1 to m do Read(f,Price[j,i]); ReadLn(f) end; Close(f);
Понятно, что не особая помощь, но хоть что-то.. ) Коллективный труд!
Добавлено через 8 мин. Ну и файл с ценами сгенерил, раз уж на то пошло.. Вот:
Там вроде бы подразумевается, что это все уже введено ((
Простите, я на курсы уходила
Добавлено через 6 мин. Ладно раз никто помогать не хочет.. 2 так 2..покажу как сделала массив училке и все ((((
Автор: Unconnected 23.11.2008 23:51
Код
const m=10; n=12; d=5; var mas1:array[1..n] of string; mas2:array[1..m,1..n] of real; mas3:array[1..d] of real; a,b:integer; buf1,nt:string; buf2,x2:real; tp,x:integer; begin x:=1; for a:=1 to n do begin buf1:=''; writeln('Введите наименование товара №',a); readln(buf1); mas1[a]:=buf1; end; for a:=1 to m do for b:=1 to n do begin buf2:=0; writeln('Введите наименование товара №,b ,'магазина №',a); readln(buf2); mas2[a,b]:=buf2; end; buf1:=''; writeln('Введите название искомого товара.'); readln(buf1); for b:=1 to n do begin if (buf1=mas1[b]) then begin tp:=b; nt:=mas1[b]; break; end;
end; buf1:=''; x:=1; x2:=0; {Здесь должна быть сортировка :)}
end.
Добавлено через 7 мин. 2Таблетка Счастья, программа немного не доделана, осталось из нужного товара с уже определённой позицией (переменная tp) выбрать 5 наименее дорогих...Это сортировка...Если хочешь, можешь подождать, доделаю наверно. P.S.Lapp,как же похожи начала программ Хотя твоего сообщения я не видел
Автор: Таблетка_Счастья 24.11.2008 0:15
я примерно знаю как делать.. Спасибо большое..Только можешь написать что buf1,nt, buf2,x2 обозначают..Дальше я сама
Добавлено через 18 мин. не, не получается сортировка у меня (
Автор: Unconnected 24.11.2008 0:39
Сейчас выложу...
Добавлено через 19 мин.
Код
uses crt; const m=10; n=12; d=5; var mas1:array[1..n] of string; mas2:array[1..m,1..n] of real; mas3:array[1..d] of real; mas4:array[1..d] of integer; a,b,x2:integer; buf1,nt:string; buf2,x:real; tp:integer; begin clrscr; x:=1; for a:=1 to n do begin buf1:=''; writeln('Введите наименование товара №,a); readln(buf1); mas1[a]:=buf1; end; clrscr; for a:=1 to m do for b:=1 to n do begin buf2:=0; writeln('Введите цену товара №',b ,' магазина №',a); readln(buf2); mas2[a,b]:=buf2; end; buf1:=''; clrscr; writeln('Введите название искомого товара '); readln(buf1); for b:=1 to n do begin if (buf1=mas1[b]) then begin tp:=b; nt:=mas1[b]; break; end;
end; if tp=0 then begin writeln('Искомый товар не найден!!!'); readln; halt; end; for a:=1 to d do begin for b:=1 to n-1 do begin if (mas2[b,tp]<mas2[b+1,tp]) then begin x:=0; x:=mas2[b,tp]; if (x<>mas3[1]) and (x<>mas3[2]) and (x<>mas3[3]) and (x<>mas3[4]) and (x<>mas3[5]) then begin buf2:=0; buf2:=mas2[b,tp]; end; end; end; mas3[d]:=buf2; end; for a:=1 to d-1 do begin buf2:=0; if (mas3[a]>mas3[a+1]) then begin buf2:=mas3[a+1]; mas3[a+1]:=0; mas3[a+1]:=mas3[a]; mas3[a]:=0; mas3[a]:=buf2; end; end; x2:=1; for a:=1 to m do begin if mas2[a,tp]=mas3[x2] then begin mas4[x2]:=a; x2:=x2+1; end; end; clrscr; for a:=1 to d do begin writeln('Магазин №',mas4[a] , nt ,' цена ', mas3[a]); end; readln; end.
Вот...тестируй... Сразу предупреждаю, может быть неправильно т.к. писал быстро... Прошу других участников форума проверить Ввод наименований товаров и цен сделай сама, благо Lapp привёл действующий пример
Автор: Таблетка_Счастья 24.11.2008 1:30
все пасипа большое! Работает все )))) Теперь все 10 задач решены )))))
Автор: Unconnected 24.11.2008 1:31
Точно работает? И правильные результаты выдаёт?
Автор: Таблетка_Счастья 24.11.2008 1:43
ну да, вроде правильно делает. А что должна не правильно делать?
Автор: Unconnected 24.11.2008 1:48
Просто у меня никогда всё сразу не работает) Ну значит всё нормально
Автор: Lapp 24.11.2008 12:03
Цитата(Таблетка_Счастья @ 23.11.2008 21:30)
все пасипа большое! Работает все )))) Теперь все 10 задач решены )))))
И непройденный string теперь уже не смущает?..
2 Unconnected: Детально не смотрел твою прогу, но одна вещь сразу бросается в глаза: зачем ты перед присвоением значения переменной присваиваешь ей ноль??
Это что - тренировка? Когда я увидел это в ответе Гостю, я подумал - просто опечатка. Теперь засомневался.. Почему так?
Автор: Гость 24.11.2008 14:14
Lapp, ладно,знаешь,главное ее сдать..Аучилка пустьсама думает,делали мы это или нет ))) Таблетка_Счастья
Автор: Lapp 24.11.2008 14:39
Цитата(Гость @ 24.11.2008 10:14)
Lapp, ладно,знаешь,главное ее сдать..Аучилка пустьсама думает,делали мы это или нет
Да я не о том.. Понимаю я твой подход (хоть он и неправильный ), но мне просто интересно - в каком виде предполагалось вводить названия, если стринги вы "не проходили" (взял в кавычки, потому что сомневаюсь..). Если прояснишь это мне - буду счастлив. И тогда следующая задача (одна!) за мной без лишних вопросов..
Автор: Unconnected 24.11.2008 15:07
2Lapp, наверно это просто привычка(Может,и дурная) очищать перед тем, как записывать в нашем случае на результате не скажется. Кстати,почему был удалён мой пост в соседнем топике?
Автор: Lapp 24.11.2008 15:42
Цитата(Unconnected @ 24.11.2008 11:07)
привычка(Может,и дурная)
Совершенно точно дурная. А откуда она?..
Цитата(Unconnected @ 24.11.2008 11:07)
Кстати,почему был удалён мой пост в соседнем топике?
Он не удален. Топик разделен. См. http://forum.pascal.net.ru/index.php?showtopic=23129&hl=