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

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

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

 
 Ответить  Открыть новую тему 
> задача на массив записей
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


Помогите не могу решить задачу. Вот условие:
Дан массив звписей, содержащих сведения о заказах в ателье пошива одежды. Разработать структуру записи и посчитать среднюю стоимость заказа.
Я тут чего зря понаписала:
Код
program mas;
type
  fabrica = record
  par1,par2,par3: 1..3;
  value,sebest,price:integer;
  sst:real;
  end;
var a:array[1..3] of fabrica;
i:integer;
begin
for i:=1 to 3 do
with a[i] do
begin
writeln ('vvedite dannye');
readln(par1,par2,par3);
sst:=(par1+par2+par3)/3;
writeln(sst);
end;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


Цитата
par1,par2,par3: 1..3;

Это что такое? почему в пределах от 1 до 3?
sst:real;

Почему средняя стоимость заказа торчит в записи?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


Код
par1,par2,par3: 1..3;

это какие то параметры по которым и вычисляется средняя стоимость, но они почему то не в массиве, вобщем я какие то куски собрала из похожих программ вот и получилось не понятно что wacko.gif
а среднюю стоимость уберу из записи smile.gif
мне бы пример составления массива с этими записями...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

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

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


Да и почему sst выводится на экран в цикле??И вообще напиши что в твоем понимании означает каждая переменная,так легче понять будет.Тебе тогда дельный совет дадут вместо кучи вопросов.

Так давай рассуждать...У тебя есть список заказов,чем у тебя обзадает каждый заказ??У заказа, как я понимаю, есть номер(сведения) и его цена.Или у тебя есть заказ,состоящий из каких либо вещей и их цена.если второй вариант,то ты создаеш какую нибудь переменную в которую записываеш всю стоимость заказа и какой нибудь счетчик,и в итоге средней стоимостью будет сумма стоимосттец вещей, деленная на счетчик.

Более того,ты говориш что у тебя данн массив,а ты вводиш его с клавиатуры.Если массив дан, то чаще всего его надо считывать из файла,так что тоже уточни.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


Цитата
о заказах в ателье пошива одежды. Разработать структуру записи

Сумасйоти! blink.gif И девочка спрашивает у нас какие там, в ателье заказы mega_chok.gif
Вы хоть на пальцах объясните, что там заказывают и какова структа заказа?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

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

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


Цитата

Цитата
о заказах в ателье пошива одежды. Разработать структуру записи
Сумасйоти! И девочка спрашивает у нас какие там, в ателье заказы
Вы хоть на пальцах объясните, что там заказывают и какова структа заказа?

+1 однако))

Галка тебе нужен пример массива.В общем массив обладает номером названием товара и ценой



type
fabrica = record
number,price:integer;
name:string;
end;
var
a : array of fabrica;
S,n,midl:integer;
begin
n:=1;
while not eof(fin) do
begin
read(fin,a[n].nuber);
read(fin,a[n].name);
read(fin,a[n].price);
S:=S+a[n].prise;
n:=n+1;
end;
midl:=S/n;
writeln(midl);
end.


В общем как то так....За правильность не отвечаю,давно это было.Если что сторожилы поправят.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


Krjuger, спасибо, только вот тут
while not eof(fin) do

на fin - unknown identifier

Сообщение отредактировано: Galka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


Не, думается так
Сама запись:
Order = record
NomerZakaz: Integer;
price : real; // цена
naim : string; // наименование товара
// еще необходимые поля/
end;
var
zakaz:array [1..n] of order;
...
читаем в цикле пока не конец файла
в массив
...
summa:=0;
for i:=1 to n do
begin
....
summa:=summa+ zakaz[i].price;
end;
summa:=summa/n;



Добавлено через 1 мин.
Цитата
на fin - unknown identifier

fin : file of fabrica; ?

Сообщение отредактировано: Ozzя -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

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

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


Тогда это уже никакой не массив записей а обычный одномерный массив.
Цитата

var a:array[1..3] of fabrica;
По сути эта строчка абсурдна.Твоя фабрика показывает что там под каждым i 3 переменные(заказ1,2,3) и таких у тебя ты обьявляеш от 1 до 3.Грубо говоря у тебя 3 заказа,которые ты береш от 1 до 3 раз,более того зачем тебе вводить массив от 1 до 3 если ты 3 раза считываеш введи тогда уж просто var a:array[3] of fabrica;
Цитата

readln(zakaz1,zakaz2,zakaz3);
Тоже бред у тебя их нету, как переменных, они лиш индексы твоего массива и на прямую,если мне не изменяет память, ты к ним обращаться не можеш.посмотри как я считывал из файла и просто удали оттуда fin и будет с клавиатуры.

P.s. Дадада я забыл в var описать fin:text; убейте меня за это,плюс как выяснилось эй это и не надо.

P.P.s.Ozzя ты лучше мою задачку посмотри(стек и дек),а эту я ей, если что сделаю.Кстати озя твой вариант не сильно отличается от моего,но у него есть один существенный минус.У тебя 2 цикла от 1 до n,а у меня один так что твоя медленней,пусть,если учиться прогать,то сразу грамотно,а то от привычек тяжело отучиваться,по себе знаю.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


Всем спасибо большое wub.gif
сделала вот так:
program mas;
type fabrica=record
kol1,kol2,kol3:integer;
cena1,cena2,cena3: integer;
end;
var a: array [1..1] of fabrica;
y: integer; i:integer;
begin
y:= 0;
for i:=1 to 1 do begin
writeln('vvedite kolichestvo zakazov na platie '); readln(a[i].kol1);
writeln('vvedite kolichestvo zakazov na bruki'); readln(a[i].kol2);
writeln('vvedite kolichestvo zakazov na ubki'); readln(a[i].kol3);
writeln('vvedite cenu na platie'); readln(a[i].cena1);
writeln('vvedite cenu na bruki'); readln(a[i].cena2);
writeln('vvedite cenu na ubku'); readln(a[i].cena3);

end;
for i:=1 to 1 do begin
with a[i] do
y:=(y + (cena1*kol1) + (cena2*kol2) + (cena3*kol3))/3;
end;
writeln('srednya stoimost ', y , ' rub.');
readln;
end.


вроде работает yes2.gif

Сообщение отредактировано: Galka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

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

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


Блин у тебя мания цыкла fоr какая то.Зачет тебе цикл от 1 до 1,это значит что он будет выполятся всего 1 раз при значении i равном 1,цикл нужен будет если таких заказов будет 10, например.Затем ,когда пишеш массив,если он у тебя строго 1 значение хранит,то зачем писать[1..1] это просто безграмотно,[1] и все,не надо мудрить.

program mas;
type
fabrica=record
kol : integer;
cena : integer;
end;
var
a: array [1..3] of fabrica;
y, i:integer;
begin
y:= 0;
for i:=1 to 3 do
begin
writeln('vvedite kolichestvo zakazov '); readln(a[i].kol);
writeln('vvedite cenu'); readln(a[i].cena);
y:=y + cena*kol;
end;
y:=y/3;
writeln('srednya stoimost ', y , ' rub.');
readln;
end.



Вот так будет выглядеть получше,правда я не уверен что тебе это надо уже)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


Krjuger спасибо большое!!!!!!!! так намного лучше и понятнее
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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