0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 13
1

Сформировать массив записей с двумя полями - наименование товара и его цена

21.01.2014, 13:56. Показов 3290. Ответов 10
Метки нет (Все метки)

Привет. Задача такова: Нужно сформировать массив записей с двумя полями(наименование товара и его цена), вывести это дело на экран, потом найти среднее значение цены всех товаров, далее записать в новый массив всё, у чего цена больше среднего значения цены. Вот с последним у меня и проблемы. Прошу подсказать С 40-ой строки начинается моя дребедень.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
program ZapisMassiv;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 type tovar=record
   name: string;
   price:integer;
 end;
var obiekt,b:array [1..15] of tovar;
 
 i,n,j,x:integer;  sredn,sum:real;
 begin
 writeln('');
 writeln('Vvedi kol-vo tovarov');
 readln(n);
 for i:=1 to n do
 begin
   writeln('Vvedi svedeniya o',i,' -om tovare');
   writeln('Vvedi nazvanie tovara');
   readln(obiekt[i].name);
   writeln('Vvedi ceny tovara');
   readln(obiekt[i].price);
 end;
 writeln('Vvod zakonchen');
 writeln('1 stolbik- imya tovara; 2 stolbik- cena tovara');
 for i:=1 to n do
 begin
 write(obiekt[i].name:4);
 write(obiekt[i].price:4);
 writeln;
 end;
 sum:=0;
 for i:=1 to n do
 sum:=obiekt[i].price+sum ;
 sredn:=(sum/n) ;
 writeln('srednee arifmeticheskoe vsex cen= ', sredn:2:2);
 x:=0;
 for i:=1 to n do
  if (obiekt[i].price > sredn) then inc(x) ;
  if (obiekt[i].price > sredn) then for j:=1 to x do b[j]:=obiekt[j];
  for j:=1 to x do begin
  write(obiekt[j].name:4);
 write(obiekt[j].price:4);
end;
 readln;
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2014, 13:56
Ответы с готовыми решениями:

Создать массив из 5 записей с полями наименование товара, цена и сохранить его в файле
создать массив из 5 записей с полями наименование товара, цена) сохранить в файле. вывести...

Массив записей. Структура: наименование товара, его количество, цену за единицу товара и общую стоимость данного товара
Пожалуйста помогите с задачкой на массивы для экзамена.. 1.Разработать программу на ЯП Pascal, в...

Для каждого товара на складе дано его наименование,количество и цена за единицу
Для каждого товара на складе дано его наименование,количество и цена за единицу.Разработать проект...

Сформировать массив записей с указанными полями и вывести его на экран в виде таблицы
Сформировать массив записей с указанными полями и вывести его на экран в виде таблицы....

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32443 / 20938 / 8104
Регистрация: 22.10.2011
Сообщений: 36,201
Записей в блоге: 7
21.01.2014, 14:27 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

При чем тут PascalABC и {$APPTYPE CONSOLE}? Компилятор какой у тебя?

А вообще, замени с 38-й строки и ниже:

Pascal
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
  writeln('srednee arifmeticheskoe vsex cen= ', sredn:2:2);
  x := 0; 
  for i := 1 to n do
    if obiekt[i].price > sredn then
    begin
      inc(x);
      b[x] := obiekt[i];
    end;
  
  for j := 1 to x do 
  begin
    write(obiekt[j].name:4);
    writeln(obiekt[j].price:4);
  end;
  readln;
end.
1
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 13
21.01.2014, 17:43  [ТС] 3
А теперь мне нужно записать эти записи (цены которых выше среднего) в типизированный файл. Вот мой вариант.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
program ZapisMassiv;
 
 
 
uses
  crt;
 
 type tovar=record
   name: string;
   price:integer;
 end;
 ftip=file of tovar;
var obiekt,b:array [1..15] of tovar;
 
 i,n,j,m:integer;  sredn,sum:real;  f:ftip;
 begin
 assign(f,'file.kkk');
 rewrite(f);
 writeln('Vvedi kol-vo tovarov');
 readln(n);
 for i:=1 to n do
 begin
   writeln('Vvedi svedeniya o',i,' -om tovare');
   writeln('Vvedi nazvanie tovara');
   readln(obiekt[i].name);
   writeln('Vvedi ceny tovara');
   readln(obiekt[i].price);
 end;
 writeln('Vvod zakonchen');
 writeln('1 stolbik- imya tovara; 2 stolbik- cena tovara');
 for i:=1 to n do
 begin
 write(obiekt[i].name:4);
 write(obiekt[i].price:4);
 writeln;
 end;
 sum:=0;
 for i:=1 to n do
 sum:=obiekt[i].price+sum ;
 sredn:=(sum/n) ;
 writeln('srednee arifmeticheskoe vsex cen= ', sredn:2:2);
 writeln('Noviy massiv tovarov, cena kotorix >sredn cen');
 m:=0;
 for i:=1 to n do
  if (obiekt[i].price > sredn) then
   begin
   m:=m+1;
   b[m].name:=obiekt[i].name;
   b[m].price:=obiekt[i].price;
   write(b[m].name:4);
   write(b[m].price:4);
   write(b[m].name:4,f);
   write(b[m].price:4,f);
    end;
  close(f);
 readln;
Добавлено через 1 минуту
В ответ на всё это Паскаль мне пишет: Нельзя выводить данные этого типа.
0
Почетный модератор
64270 / 47569 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
21.01.2014, 17:51 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

f
Pascal
1
2
3
4
5
6
7
8
9
or i:=1 to n do
 begin
   writeln('Vvedi svedeniya o',i,' -om tovare');
   writeln('Vvedi nazvanie tovara');
   readln(obiekt[i].name);
   writeln('Vvedi ceny tovara');
   readln(obiekt[i].price);
   write(f,obiekt[i])//занесение записи в файл
 end;
1
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 13
21.01.2014, 18:50  [ТС] 5
А как прочитать из типизированного файла то, что я туда записал?
0
Почетный модератор
64270 / 47569 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
21.01.2014, 18:52 6
Pascal
1
2
3
4
5
while not eof(f) do
 begin
  read(f,z);//запись не обязательно элемент массива, массивы вообще не нужны
  writeln(z.name,' ',z.price);
 end;
1
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 13
21.01.2014, 19:13  [ТС] 7
Блин, бошка уже не варит. Пробовал эту переменную z засовывать во все вары, не выходит..
Как описать эту z?
0
Почетный модератор
64270 / 47569 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
21.01.2014, 19:20 8
Pascal
1
var z:tovar;
0
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 13
21.01.2014, 19:57  [ТС] 9
При таком раскладе ничего не выводится почему-то.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
program ZapisMassiv;
uses
  crt;
 
 type tovar=record
   name: string;
   price:integer;
 end;
 ftip=file of tovar;
var obiekt,b:array [1..15] of tovar;
  z:tovar;
 i,n,j,m:integer;  sredn,sum:real;  f:ftip;
 begin
 assign(f,'file.kkk');
 rewrite(f);
 writeln('Vvedi kol-vo tovarov');
 readln(n);
 for i:=1 to n do
 begin
   writeln('Vvedi svedeniya o',i,' -om tovare');
   writeln('Vvedi nazvanie tovara');
   readln(obiekt[i].name);
   writeln('Vvedi ceny tovara');
   readln(obiekt[i].price);
 end;
 writeln('Vvod zakonchen');
 writeln('1 stolbik- imya tovara; 2 stolbik- cena tovara');
 for i:=1 to n do
 begin
 write(obiekt[i].name:4);
 write(obiekt[i].price:4);
 writeln;
 end;
 sum:=0;
 for i:=1 to n do
 sum:=obiekt[i].price+sum ;
 sredn:=(sum/n) ;
 writeln('srednee arifmeticheskoe vsex cen= ', sredn:2:2);
 writeln('Noviy massiv tovarov, cena kotorix >sredn cen');
 m:=0;
 for i:=1 to n do
  if (obiekt[i].price > sredn) then
   begin
   m:=m+1;
   b[m].name:=obiekt[i].name;
   b[m].price:=obiekt[i].price;
   write(b[m].name:4);
   write(b[m].price:4);
   write(f,b[m]);
    end;
    writeln('Chitaem iz tip faila');
    while not eof(f) do
 begin
  read(f,z);
  writeln(z.name,' ',z.price);
 end;
  close(f);
 readln;
end.
0
Почетный модератор
64270 / 47569 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
21.01.2014, 20:03 10
Так открыть файл для чтения нужно
Pascal
1
2
reset(f);
while not eof(f) do
1
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 13
21.01.2014, 20:17  [ТС] 11
Ёлки-иголки, всё, благодарю тебя, Пупорев!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2014, 20:17
Помогаю со студенческими работами здесь

Сформировать массив записей с указанными полями и вывести его на экран в виде таблицы
Сформировать массив записей с указанными полями и вывести его на экран в виде таблицы....

Сформировать массив записей с указаными полями и вывести его на экран в виде таблицы
Сформировать массив записей с указаными полями и вывести его на экран в виде таблицы. Может кто...

Сформировать массив записей с указанными полями и вывести его на экран в виде таблицы.
заголовки в таблице: l Фамилии l Улица l # Дома l Квартира l 1. Сформировать массив записей с...

Создайте файл, содержащий записи следующей структуры: наименование товара, старая цена, новая цена.
Создайте файл, содержащий записи следующей структуры: наименование товара, старая цена, новая цена....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru