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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2011, 14:28   #1
Александр1993
Пользователь
 
Регистрация: 29.05.2011
Сообщений: 20
По умолчанию Функция

Задание 9
Дан массив марок автомашин M1, ... , M25.
Определить K1 - количество ГАЗ - 21; К2 - количество ЗИЛ -130; КЗ - количество КамАЗ. Вычислить К = (K1 + K2 + K3)/25.


Код:
Uses Crt;
const
  m: array[1..25] of String = ( 
    'ГАЗ-21',
    'ЗИЛ-130',
    'КамАЗ',
    'Мерседес',
    'БМВ',
    'Феррари',
    'ЗИЛ-130',
    'ЗИЛ-130',
    'ГАЗ-21',
    'ЗИЛ-130',
    'КамАЗ',
    'Мерседес',
    'КамАЗ',
    'КамАЗ',
    'ГАЗ-21',
    'БМВ',
    'Феррари',
    'ЗИЛ-130',
    'КамАЗ',
    'Мерседес',
    'КамАЗ',
    'КамАЗ',
    'ГАЗ-21',
    'Феррари',
    'ЗИЛ-130'
  );
var
  i: Integer;
  k1: Integer;
  k2: Integer;
  k3: Integer;
  k: Real;
begin
  ClrScr; 
  k1 := 0;
  k2 := 0;
  k3 := 0;
  for i := 1 to 25 do 
    if m[i] = 'ГАЗ-21' then 
      Inc(k1) 
    else if m[i] = 'ЗИЛ-130' then 
      Inc(k2)
    else if m[i] = 'КамАЗ' then 
      Inc(k3);
  Writeln('k1 = ', k1); 
  Writeln('k2 = ', k2);
  Writeln('k3 = ', k3);
  k := (k1 + k2 + k3) / 25; 
  Writeln('k = (k1 + k2 + k3) / 25 = ', k:1:3); 
  ReadKey;
end.
решил задачу простым способом, но не понимаю, как сделать ее через функцию ( в задании требуется именно через нее), подскажите плиз.

Последний раз редактировалось Stilet; 29.05.2011 в 15:31.
Александр1993 вне форума Ответить с цитированием
Старый 29.05.2011, 15:14   #2
Александр1993
Пользователь
 
Регистрация: 29.05.2011
Сообщений: 20
По умолчанию

Код:
const
  m: array[1..25] of String = ( 
    'ГАЗ-21',
    'ЗИЛ-130',
    'КамАЗ',
    'Мерседес',
    'БМВ',
    'Феррари',
    'ЗИЛ-130',
    'ЗИЛ-130',
    'ГАЗ-21',
    'ЗИЛ-130',
    'КамАЗ',
    'Мерседес',
    'КамАЗ',
    'КамАЗ',
    'ГАЗ-21',
    'БМВ',
    'Феррари',
    'ЗИЛ-130',
    'КамАЗ',
    'Мерседес',
    'КамАЗ',
    'КамАЗ',
    'ГАЗ-21',
    'Феррари',
    'ЗИЛ-130'
  );
var
 i, k1, k2, k3: Integer;
 k: Real;
function mashini(x:integer):integer;
  var i:integer;
  begin
  for i:=1 to 25 do
  if m[i] = 'ГАЗ-21' then inc(x);
  mashini:=x;
  end;
function mashini2(y:integer):integer;
  var i:integer;
  begin
  for i:=1 to 25 do
  if m[i] = 'ЗИЛ-130' then inc(y);
  mashini2:=y;
  end; 
function mashini3(z:integer):integer;
  var i:integer;
  begin
  for i:=1 to 25 do
  if m[i] ='КамАЗ' then inc(z);
  mashini3:=z;
  end; 
begin
k1:= mashini(k1);
k2:= mashini2(k2);
k3:= mashini3(k3);
k:=(k1+k2+k3)/25;
writeln('k1=',k1 ,' k2= ',k2 ,' k3=',k3 ,' k=',k)
end.
щас посидел подумал, вроде сделал, проверьте плиз.

Последний раз редактировалось Stilet; 29.05.2011 в 15:32.
Александр1993 вне форума Ответить с цитированием
Старый 29.05.2011, 15:22   #3
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Лучше так:

Код:
Function Mashin(S : String) : Integer;
Var i : Integer;
Begin
Result := 0;
For i := 1 To 25 Do If m[i] = S Then Inc(Result);
End;

.....

k1 := Mashin('ГАЗ-21');
В функцию передаёшь марку машины и она считает сколько раз эта марка встретилась.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 29.05.2011, 15:25   #4
Александр1993
Пользователь
 
Регистрация: 29.05.2011
Сообщений: 20
По умолчанию

Ок, хорошо, запомню...
Александр1993 вне форума Ответить с цитированием
Старый 29.05.2011, 15:47   #5
Александр1993
Пользователь
 
Регистрация: 29.05.2011
Сообщений: 20
По умолчанию

еще вопросик, когда решаю задачу модулем Паскаля, как делать с этими 3 функциями??


Код:
program machine;
uses crt, MOD;
const
m: array[1..25] of String = ( 
    'ГАЗ-21',
    'ЗИЛ-130',
    'КамАЗ',
    'Мерседес',
    'БМВ',
    'Феррари',
    'ЗИЛ-130',
    'ЗИЛ-130',
    'ГАЗ-21',
    'ЗИЛ-130',
    'КамАЗ',
    'Мерседес',
    'КамАЗ',
    'КамАЗ',
    'ГАЗ-21',
    'БМВ',
    'Феррари',
    'ЗИЛ-130',
    'КамАЗ',
    'Мерседес',
    'КамАЗ',
    'КамАЗ',
    'ГАЗ-21',
    'Феррари',
    'ЗИЛ-130'
  );
var
 i, k1, k2, k3: Integer;
 k: Real;
begin
clrscr;
k1:= mashini(k1);
k2:= mashini2(k2);
k3:= mashini3(k3);
k:=(k1+k2+k3)/25;
writeln('k1=',k1 ,' k2= ',k2 ,' k3=',k3 ,' k=',k)
end.


а после:

Код:
unit MOD;
interface
function mashini(x,y,z:integer):integer;
var i: integer
implementation
function mashini(x:integer):integer;
  var i:integer;
  begin
  for i:=1 to 25 do
  if m[i] = 'ГАЗ-21' then inc(x);
  mashini:=x;
  end;
function mashini(x,y,z:integer):integer;
var i: integer
implementation
function mashini2(y:integer):integer;
  var i:integer;
  begin
  for i:=1 to 25 do
  if m[i] = 'ЗИЛ-130' then inc(y);
  mashini2:=y;
  end; 
function mashini(x,y,z:integer):integer;
var i: integer
implementation
function mashini3(z:integer):integer;
  var i:integer;
  begin
  for i:=1 to 25 do
  if m[i] ='КамАЗ' then inc(z);
  mashini3:=z;
  end;

Последний раз редактировалось Александр1993; 29.05.2011 в 15:50.
Александр1993 вне форума Ответить с цитированием
Старый 04.06.2011, 19:55   #6
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Цитата:
можете объяснить, что значит? не понял. что за S? Хотелось бы еще побеседовать насчет этой задачи... Если будет возможность, напишите, очень нужно!
Код:
Function Mashin(S : String) : Integer;
Тут написано что мы создали функцию с названием Mashin и что она принимает параметр S типа String. Возвращаемое значение типа Integer.
S - строка которую надо найти (марка машины).
Возвращаемый параметр - кол-во раз сколько это строка встретилась в массиве.

S это переменая с которой будет работать функция.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 04.06.2011, 22:25   #7
Александр1993
Пользователь
 
Регистрация: 29.05.2011
Сообщений: 20
По умолчанию Так

задачу решенную выше мною, преподаватель не оценил, сказал, зачем я вызываю одну и туже функцию 3 раза, если можно все это сделать в 1-й функции, он мне привел пример: sin10, sin20, sin30, так же и у меня
Код:
program n9;
type
mas=array[1..25] of string;
var
m:mas;
k1, k2 ,k3:real;
k:real;
procedure vvod(var m:mas);
var
i:integer;
begin
for i:=1 to 25 do
readln(m[i]);
end;
Function Mashin(S: string) : integer;
Var
F:text;
i:integer;
Begin
assign (F,'C:\Users\user\Desktop\Zadacha.txt');
reset (F);
for i:= 1 to 25 do 
readln (F, m[i]);
close (F);
For i := 1 To 25 Do begin
If m[i] = 'Gaz-21' Then inc(Result) 
end;
For i := 1 To 25 Do begin
If m[i] = 'Zil-130' Then inc(Result) 
end;
For i := 1 To 25 Do begin
If m[i] = 'Kamaz' Then inc(Result)
end;;
Mashin:=Result;
end;
begin
k1:=Mashin('Gaz-21');
k2:=Mashin('Zil-130');
k3:=Mashin('Kamaz');
writeln('k1=',k1,' k2=',k2,' k3=',k3);
k:=(k1+k2+k3)/25;
writeln('k=',k:3:2);
readln;
end.
вот сделал, но не получается. у меня суммируются не так значения. Текстовый файл
Код:
Gaz-21
Zil-130
Kamaz
Mercedez
BMW
Ferrary
Zil-130
Zil-130
Gaz-21
Gaz-21
Zil-130
Kamaz
Mercedez
Kamaz
Kamaz
Gaz-21
BMW
Ferrary
Zil-130
Kamaz
Mercedez
Kamaz
Kamaz
Mercedez
Zil-130
Файл просчитывает правильно, 17 машин всего, но он их складывает(17+17+17), не пойму, как исправить...

Последний раз редактировалось Александр1993; 04.06.2011 в 22:29.
Александр1993 вне форума Ответить с цитированием
Старый 04.06.2011, 22:35   #8
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Тоесть всё это:

Цитата:
Определить K1 - количество ГАЗ - 21; К2 - количество ЗИЛ -130; КЗ - количество КамАЗ. Вычислить К = (K1 + K2 + K3)/25.
Нужно засунуть в одну функцию?
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 04.06.2011, 22:57   #9
Александр1993
Пользователь
 
Регистрация: 29.05.2011
Сообщений: 20
По умолчанию

как я понял, по его словам, да, типо смотрите: k=(kol(m,'Gaz-21')+kol(m,'Zil-130')+kol(m,'Kamaz'))/25

вот так он написал мне на листке с неправильным заданием=) в нашем случае, как я понял kol будет играть Mashin, осталось только разобраться, как это записать в этой самой функции, я написал, он посчитал все машины, которые мне надо, их ровно 17, но он считает, что k1=17 k2=17 k3=17, и вот я хз как тут быть=(

Последний раз редактировалось Александр1993; 04.06.2011 в 23:01.
Александр1993 вне форума Ответить с цитированием
Старый 04.06.2011, 23:08   #10
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Судя по его записи в функцию передаётся массив и строка которую надо искать.

Цитата:
но он считает, что k1=17 k2=17 k3=17, и вот я хз как тут быть=(
Кто "он"?
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция.... begemotikdin Паскаль, Turbo Pascal, PascalABC.NET 3 19.08.2010 18:51
Функция MilenaR Помощь студентам 5 10.05.2010 20:43
Функция Kloun1 Паскаль, Turbo Pascal, PascalABC.NET 5 24.01.2009 19:56
Функция в VB asd48 Помощь студентам 1 25.12.2008 23:29
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50