Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2015, 15:45   #1
serg737
Новичок
Джуниор
 
Регистрация: 03.05.2015
Сообщений: 2
Злость Записи: Найти багаж, средний вес одной вещи в котором отличается не более, чем на 0,3 кг от общего среднего веса одной вещи

Задали задачу по паскалю тема ТИП ДАННЫХ «ЗАПИСЬ»

собственно вот условие:

Найти багаж, средний вес одной вещи в котором отличается не более, чем на 0,3 кг от общего среднего веса одной вещи.

Последний раз редактировалось Вадим Мошев; 03.05.2015 в 16:05.
serg737 вне форума Ответить с цитированием
Старый 03.05.2015, 16:07   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Пробуйте решать самостоятельно. Если будут вопросы, покажите свои наработки, вам подскажут.
Вадим Мошев вне форума Ответить с цитированием
Старый 03.05.2015, 16:22   #3
serg737
Новичок
Джуниор
 
Регистрация: 03.05.2015
Сообщений: 2
Печаль

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Пробуйте решать самостоятельно. Если будут вопросы, покажите свои наработки, вам подскажут.
эх если б я так мог... показывать свои наработки даже стыдно

нашел что-то подобное, но как переделать под свою задачу и вообще есть ли тут часть правильности?

Код:
uses Crt;
type
bagaz=record//тип запись багаж
     kol:byte;//кол-во
     ves:real;//вес
     end;
var bg:array[1..100] of bagaz;/массив записей
    n,i,k,k2,ks,p:integer;
    srv,srk:real;
begin
clrscr;
writeln('Введите количество пассажиров n=');
readln(n);
writeln('Введите данные о багаже');
srv:=0;srk:=0;k:=0;
for i:=1 to n do
 begin
  writeln('Багаж ',i);
  write(' Количество мест: ');readln(bg[i].kol);
  k:=k+bg[i].kol;//считаем сколько всего вещей
  write(' Вес: ');readln(bg[i].ves);
  srk:=srk+bg[i].kol;//считаем количество для среднего
  srv:=srv+bg[i].ves;//общий вес для среднего
 end;
srk:=srk/n;//среднее кол-во
srv:=srv/k;//средний вес
writeln('Средний вес 1 вещи=',srv:0:2);
p:=0;
writeln('Багаж, где средний вес одной вещи отличается не более 0.3 от среднего веса');
k2:=0;ks:=0;
for i:=1 to n do
 begin
  if abs(bg[i].ves/bg[i].kol-srv)<=0.3then//если разница по модулю не больше 0,3
   begin
    p:=1;//есть
    writeln(bg[i].kol,'  ',bg[i].ves:0:2);//выводим
   end;
  if bg[i].kol>2 then k2:=k2+1;//кол-во вещей болше 2
  if bg[i].kol>srk then ks:=ks+1;//кол-во больше среднего
 end;
if p=0 then writeln('Такого багажа нет!');
writeln;
writeln('Число пассажиров, имеющих более 2х вещей=',k2);
writeln('Среднее число вещей=',srk:0:0);
writeln('Число пассажиров, имеющих вещей больше среднего=',ks);
readln
end.
serg737 вне форума Ответить с цитированием
Старый 03.05.2015, 17:18   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
эх если б я так мог... показывать свои наработки даже стыдно
ИМХО, если стыдно, то это уже хорошо, видать, вы на верном пути. Но

Цитата:
нашел что-то подобное, но как переделать под свою задачу и вообще есть ли тут часть правильности?
Вы не научитесь так, если будете пользоваться чужими наработками. Лучше всего писать самостоятельно. Кроме того, так будет легче.
Вадим Мошев вне форума Ответить с цитированием
Старый 03.05.2015, 18:09   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Найти багаж, средний вес одной вещи в котором отличается не более, чем на 0,3 кг от общего среднего веса одной вещи.
Эх студент студент...
Поясняю: Итак. Запись
Код:
type
 TRec=record
  Name:String;
  Weigth:Double;
 end;
var a:array[1..1000] of TRec; i:integer; sum:Double
Это тип и массив, хранящий багаж. Тут же переменка для цикла и переменка для суммы всех вещей

Ввод:
Код:
sum:=0;
for i:=1 to 1000 do begin
 Writeln('Введи ', i,'-й багаж: ');
  Write('  Название':20); readln(a[i].Name);
  Write('  Вес':20); readln(a[i].Weigth);
 sum:=sum+a[i].Weigth;
end;
Тут вводятся данные, и суммируется вес багажа в общем

Ну о отбор по критерию в задаче:
Код:
for i:=1 to 1000 do begin
 if abs(a[i].Weigth-sum/1000)>0.3 then Continue;
  Write('  Название':20,a[i].Name:30);
  Write('  Вес':20,a[i].Weigth:10:2);
end;
А тут багаж проверяется по весу с средним арифметическим и выводится, если проходит по условию.

Ну? Понял?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна ваша помощь! NerfDoriftar Общие вопросы Delphi 27 17.01.2015 23:47
Нужна ваша помощь.) Linus Паскаль, Turbo Pascal, PascalABC.NET 4 11.05.2009 10:00
нужна ваша помощь! forsy Паскаль, Turbo Pascal, PascalABC.NET 2 19.05.2008 14:38