Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Список Минимальных цен

Автор: Таблетка_Счастья 23.11.2008 16:31

Помогите пожалуйста решить задачу..Решила 9ть, а последнюю не могу (( Уже неделю бьюсь над ней (( Никак не получается..

Имеются сведения о названиях и ценах на n=12 видов товаров по m=10 магазинам. Требуется составить список пяти магазинов, имеющих минимальные цены по заданному виду товара. Список должен включать номер магазина, название и цену выставленного товара. Магазины в списке расположить в порядке возрастания товара..

Я Даже массив не могу сформировать ((
Нужно до завтра (((

Автор: Lapp 23.11.2008 16:56

М
Таблетка_Счастья, сделай мне маленькое мое счастье - выполни Правила, п.4 (ссылка вверху страницы).

Кнопка "Изменить" тебе в помощь..

Автор: Таблетка_Счастья 23.11.2008 16:59

Я исправила, извините ((

Автор: Lapp 23.11.2008 17:12

Цитата(Таблетка_Счастья @ 23.11.2008 12:59) *
Я исправила, извините ((

Спасибо! smile.gif

Тут будет не один массив, а два.
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

О-о! blink.gif
А как ты тогда рассчитываешь задавать названия? Скажи.. я просто даже не знаю..


Добавлено через 3 мин.
Ты уверена, что не проходили?

Автор: Unconnected 23.11.2008 20:29

А заполнять надо случайным образом или с клавиатуры?

Автор: Lapp 23.11.2008 20:34

Цитата(Unconnected @ 23.11.2008 16:29) *
А заполнять надо случайным образом или с клавиатуры?

Названия случайным образом? smile.gif
Я начал было делать, сделал ввод из файла обоих массивов, но тут леди странно высказалась про строки, а потом и вовсе пропала smile.gif. Ну, ее дело..

Автор: Unconnected 23.11.2008 20:37

Ну почему,можно сделать массив с названиями...и случайным образом из него заполнить) Просто я уже сделал фактически и попробовал заполнить с клавиатуры...долгое это занятие smile.gif

Автор: Lapp 23.11.2008 20:44

Цитата(Unconnected @ 23.11.2008 16:37) *
Просто я уже сделал фактически и попробовал заполнить с клавиатуры...долгое это занятие smile.gif

Погоди, я тебе дам чтение smile.gif..

Вот:
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);

Понятно, что не особая помощь, но хоть что-то.. smile.gif) Коллективный труд!

Добавлено через 8 мин.
Ну и файл с ценами сгенерил, раз уж на то пошло.. smile.gif
Вот:

54.88 59.28 71.52 84.43 60.28 85.79 54.49 84.73 42.37 62.36
64.59 38.44 43.76 29.75 89.18 5.67 96.37 27.27 38.34 47.77
79.17 81.22 52.89 48.00 56.80 39.28 92.56 83.61 7.10 33.74
8.71 64.82 2.02 36.82 83.26 95.72 77.82 14.04 87.00 87.01
97.86 47.36 79.92 80.09 46.15 52.05 78.05 67.89 11.83 72.06
63.99 58.20 14.34 53.74 94.47 75.86 52.18 10.59 41.47 47.36
26.46 18.63 77.42 73.69 45.62 21.66 56.84 13.52 1.88 32.41
61.76 14.97 61.21 22.23 61.69 38.65 94.37 90.26 68.18 44.99
35.95 61.31 43.70 90.23 69.76 9.93 6.02 96.98 66.68 65.31
67.06 17.09 21.04 35.82 12.89 75.07 31.54 60.78 36.37 32.50
57.02 3.84 43.86 63.43 98.84 95.89 10.20 65.28 20.89 63.51
16.13 99.53 65.31 58.19 25.33 41.44 46.63 47.47 24.44 62.35

Автор: Таблетка_Счастья 23.11.2008 23:31

Там вроде бы подразумевается, что это все уже введено ((

Простите, я на курсы уходила

Добавлено через 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,как же похожи начала программ smile.gif Хотя твоего сообщения я не видел blink.gif

Автор: Таблетка_Счастья 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.


Вот...тестируй... Сразу предупреждаю, может быть неправильно т.к. писал быстро... Прошу других участников форума проверить smile.gif Ввод наименований товаров и цен сделай сама, благо Lapp привёл действующий пример smile.gif

Автор: Таблетка_Счастья 24.11.2008 1:30

все пасипа большое! Работает все )))) Теперь все 10 задач решены )))))

Автор: Unconnected 24.11.2008 1:31

Точно работает? И правильные результаты выдаёт? blink.gif

Автор: Таблетка_Счастья 24.11.2008 1:43

ну да, вроде правильно делает. А что должна не правильно делать?

Автор: Unconnected 24.11.2008 1:48

Просто у меня никогда всё сразу не работает) Ну значит всё нормально smile.gif

Автор: Lapp 24.11.2008 12:03

Цитата(Таблетка_Счастья @ 23.11.2008 21:30) *
все пасипа большое! Работает все )))) Теперь все 10 задач решены )))))
И непройденный string теперь уже не смущает?.. smile.gif

2 Unconnected:
Детально не смотрел твою прогу, но одна вещь сразу бросается в глаза: зачем ты перед присвоением значения переменной присваиваешь ей ноль??
                                  mas3[a+1]:=0;
mas3[a+1]:=mas3[a];
mas3[a]:=0;
mas3[a]:=buf2;

Это что - тренировка? Когда я увидел это в ответе Гостю, я подумал - просто опечатка. Теперь засомневался.. Почему так? blink.gif

Автор: Гость 24.11.2008 14:14

Lapp, ладно,знаешь,главное ее сдать..Аучилка пустьсама думает,делали мы это или нет )))
Таблетка_Счастья

Автор: Lapp 24.11.2008 14:39

Цитата(Гость @ 24.11.2008 10:14) *
Lapp, ладно,знаешь,главное ее сдать..Аучилка пустьсама думает,делали мы это или нет

Да я не о том.. Понимаю я твой подход (хоть он и неправильный smile.gif ), но мне просто интересно - в каком виде предполагалось вводить названия, если стринги вы "не проходили" (взял в кавычки, потому что сомневаюсь..). Если прояснишь это мне - буду счастлив. И тогда следующая задача (одна!) за мной без лишних вопросов.. smile.gif

Автор: Unconnected 24.11.2008 15:07

2Lapp, наверно это просто привычка(Может,и дурная) очищать перед тем, как записывать smile.gif в нашем случае на результате не скажется. Кстати,почему был удалён мой пост в соседнем топике?

Автор: Lapp 24.11.2008 15:42

Цитата(Unconnected @ 24.11.2008 11:07) *
привычка(Может,и дурная)
Совершенно точно дурная. А откуда она?.. blink.gif

Цитата(Unconnected @ 24.11.2008 11:07) *
Кстати,почему был удалён мой пост в соседнем топике?
Он не удален. Топик разделен. См. http://forum.pascal.net.ru/index.php?showtopic=23129&hl=