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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 10:58   #1
GreyF
 
Регистрация: 21.11.2012
Сообщений: 3
Восклицание Немогу переделать программу что бы массив вводился с руки!

Найти минимальное значение из математических ожиданий трех случайных величин А, В, С. Математическое ожидание М(х) случайной величины X вычисляется по формуле: A[9], B[10], C[17]

Вот программа которая работает но массив вводится не от руки:
Код:
#include <stdio.h>
#include <stdlib.h>
float mo(float X[], int n)
      { int i;
      float s=0;
      for (i=0;i<=n-1;i++)
      s+=X[i];
      s/=n;
      return s;
      }
      int main(int argc, char *argv[])
  { float ma,mb,mc,
  a[9]={1,2,3,4,5,6,7,8,9},
  b[10]={1,2,3,4,5,6,7,8,9,10},
  c[17]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
  ma=mo(a,9);
  mb=mo(b,10);
  mc=mo(c,17);
	
  if (ma>mb) { if (ma>mc) printf("\nMAX - Mat oj A %f",ma);}
  else
  if (mb>mc) printf("\nMAX - Mat oj B %f",mb);
  else
  printf("\nMAX - Mat oj C %f",mc);

  system("PAUSE");	
  return 0;
}
Я переделал так:
Код:
#include <stdio.h>
#include <stdlib.h>
float mo(float X[], int n)
      { int i;
      float s=0;
    
      for (i=0;i<=n-1;i++)
      
      s+=X[i];
      s/=n;
      return s;
      }
      int main(int argc, char *argv[])
  {   int i;
  float a[9],b[10],c[17];
  for (i=1;i<10;i++)
  scanf ("%f",&a[i]);
   for (i=1;i<10;i++)
  scanf ("%f",&b[i]);
   for (i=1;i<10;i++)
  scanf ("%f",&c[i]);

  a=mo(a,9);
  b[10]=mo(b,10);
  c[17[=mo(c,17);
  
  
  printf("\nMAX - Mat oj A %f",ma);
  
  if (ma>mb) { if (ma>mc) printf("\nMAX - Mat oj A %f",ma);}
  else
  if (mb>mc) printf("\nMAX - Mat oj B %f",mb);
  else
  printf("\nMAX - Mat oj C %f",mc);
  
  system("PAUSE");	
  return 0;
}
но в строчках
Код:
a=mo(a,9);
  b[10]=mo(b,10);
  c[17[=mo(c,17);
выдаёт ошибку:
a' undeclared (first use in this function)
как исправить
GreyF вне форума Ответить с цитированием
Старый 27.11.2012, 11:31   #2
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию

Код:
 float a[9],b[10],c[17];
  for (i=1;i<10;i++)
  scanf ("%f",&a[i]);
   for (i=1;i<10;i++)
  scanf ("%f",&b[i]);
   for (i=1;i<10;i++)
  scanf ("%f",&c[i]);
индексация массива начинается не с 1, а с 0. то есть первый элемент это a[0]. второй элемент это a[1] и так далее. соответственно первый цикл должен иметь вид
Код:
for (i = 0;i < 9; i++)
  scanf ("%f",&a[i]);
насчет второго - тут исправить только i = 1 на i = 0.
в третьем цикле аналогично, только в добавок - вместо i < 10 следует i < 17 - в соответствии с размерностью массива.

и еще - если переменная i нужна для использования в цикле, то я сделал бы так

Код:
float a[9],b[10],c[17];
  for (int i = 0; i < 9; i++)
  scanf ("%f",&a[i]);
   for (int = 0; i < 10;i++)
  scanf ("%f",&b[i]);
   for (int i = 0; i < 17; i++)
  scanf ("%f",&c[i]);
в данном случае при входе в цикл она создается, а по завершению цикла - уничтожается.

и еще здесь видимо ты хотел так написать(хотя для чего не пойму)

Код:
a[9]=mo(a,9);
  b[10]=mo(b,10);
  c[17]=mo(c,17);
также переменные ma,mb,mc у тебя не объявлены


поправил, и вроде работает как надо. не?

Код:
#include <stdio.h>
#include <stdlib.h>
float mo(float X[], int n){
      float s=0;    
      for (int i = 0;i<=n-1;i++)      
		s+=X[i];
      s/=n;
      return s;
}
int main(int argc, char *argv[]){   
	float a[9],b[10],c[17];
	float ma,mc,mb;

	for (int i = 0; i < 9; i++)
		scanf ("%f",&a[i]);
	for (int i = 0; i < 10; i++)
		scanf ("%f",&b[i]);
	for (int i = 0; i < 17; i++)
		scanf ("%f",&c[i]);
	ma = (a, 9);
	mb = (b, 10);
	mc = (c, 17);
  
  
  printf("\nMAX - Mat oj A %f",ma);
  
  if (ma>mb) { if (ma>mc) printf("\nMAX - Mat oj A %f",ma);}
  else
  if (mb>mc) printf("\nMAX - Mat oj B %f",mb);
  else
  printf("\nMAX - Mat oj C %f",mc);
  
  system("PAUSE");	
  return 0;
}
Я могу, Я хочу, Я буду!

Последний раз редактировалось ArmanPrestige; 27.11.2012 в 11:42.
ArmanPrestige вне форума Ответить с цитированием
Старый 27.11.2012, 11:32   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Во-первых, функция у вас возвращает флоат, а не массив, поэтому вы, наверное, хотели a[9] = ...
Во-вторых, массивы в с нумеруются с 0, исправляйте циклы и никаких элементов a[9], b[10], c[17] у вас нет.
p51x вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
немогу составить программу. sanyok1992 Паскаль, Turbo Pascal, PascalABC.NET 0 09.05.2011 22:46
Немогу вспомнить программу webstream HTML и CSS 0 25.01.2011 11:41
Немогу переделать(переписать) прогу!!!! metamfetamin Помощь студентам 0 25.11.2007 14:27