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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2015, 05:34   #1
Pablo S
 
Регистрация: 20.03.2015
Сообщений: 7
По умолчанию Помогите найти среднее арифметическое всех элементов массива на Си

нужно чтобы в итоге получилось что-то вроде этого только на Си
Pablo S вне форума Ответить с цитированием
Старый 20.03.2015, 11:26   #2
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

примерно так:
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main(){
 int size, i, *array, sum = 0;
 printf("\nInput array size: ");
 scanf("%d", &size);
 array = (int *) malloc (size * sizeof(int));
 if (array == NULL) {
	 printf("\nFATALL ERROR !!!");
	 return 1;
 }
 for (i = 0; i < size; i++) {
	printf("array[%d] = ", i);
	scanf("%d", &array[i]);
	sum += array[i];
 }
 printf("\n%d / %d = %.3f", sum, size, ((float)sum / size));
 free(array);
 getch();
 return 0;
}
#define TRUE FALSE //счастливой отладки
Aleksander550 вне форума Ответить с цитированием
Старый 26.03.2015, 05:03   #3
Pablo S
 
Регистрация: 20.03.2015
Сообщений: 7
По умолчанию

Спасибо, а как сделать чтобы выводились русские подписи, как на скрине?
Pablo S вне форума Ответить с цитированием
Старый 26.03.2015, 05:07   #4
Pablo S
 
Регистрация: 20.03.2015
Сообщений: 7
По умолчанию

Еще прошу подскажите где здесь ошибка? Почему не работает?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
	int a[999];
	int i,n,summa;
	float srednee;

	system("clear");
	system("cls");
	printf('Введите количество элементов\n');
	scanf("%d",&n);

	summa = 0;
	for(i = 0 ; i < n; i++)
	{
		printf('Введите %d элемент : ', i);
		scanf("%d",&a[i]);
		summa = summa + a[i];
	}
	srednee = summa / n;
	printf('Среднее арифметическое %f', srednee);

return 0;
}

Последний раз редактировалось Stilet; 26.03.2015 в 17:39.
Pablo S вне форума Ответить с цитированием
Старый 26.03.2015, 05:33   #5
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 823
По умолчанию

Может стоит прочитать ошибки, которые выдаёт компилятор?

В языке С в одинарных кавычках указывается символ. Для строк надо использовать двойные кавычки.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 26.03.2015, 06:34   #6
Pablo S
 
Регистрация: 20.03.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
Может стоит прочитать ошибки, которые выдаёт компилятор?

В языке С в одинарных кавычках указывается символ. Для строк надо использовать двойные кавычки.
Кавычки поправил, но здесь есть другая ошибка, среднее арифметическое неправильно рассчитывается
Pablo S вне форума Ответить с цитированием
Старый 26.03.2015, 06:50   #7
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
но здесь есть другая ошибка, среднее арифметическое неправильно рассчитывается
Как ты определил, что оно рассчитывается неправильно?
rrrFer вне форума Ответить с цитированием
Старый 26.03.2015, 07:10   #8
Pablo S
 
Регистрация: 20.03.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Как ты определил, что оно рассчитывается неправильно?

Она не выводит десятичные, вместо них всегда нули.
Как это исправить, или как вообще убрать десятичные?

И еще не получается настроить русский язык
Pablo S вне форума Ответить с цитированием
Старый 26.03.2015, 07:11   #9
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Ну поправь так:
Код:
srednee = 1.*summa / n;
У вас сумма - целое число и количество элементов - тоже целое. Поэтому выполняется целочисленное деление с округлением вниз. При делении получается целое число, но при выводе вы написали "%f" поэтому оно преобразуется в дробное, но округление уже произошло, поэтому в качестве дробной части нули.

ЧТобы решить проблему можно изменить тип переменной summa на float, например. Можно выполнить приведение типа:
Код:
srednee = ((float) summa) / n;
Ну а можно домножить на дробное (как я показал выше). После умножения получится дробное число, которое и будет делиться, т.к. один из операндов дробный - то и результат деления округляться не будет.

Цитата:
И еще получается сделать настроить русский язык
Поиском по форуму пользоваться пробовали?
русский язык в консоли на С++

Кстати, в твоем коде массив не нужен вообще, т.к. ты каждый его элемент используешь лишь один раз.
Код:
for(i = 0 ; i < n; i++) {
  int value;
  printf('Введите %d элемент : ', i);
  scanf("%d",&value);
  summa = summa + value;
}

Последний раз редактировалось Stilet; 26.03.2015 в 17:39.
rrrFer вне форума Ответить с цитированием
Старый 26.03.2015, 07:16   #10
Pablo S
 
Регистрация: 20.03.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Ну поправь так:
Код:
srednee = 1.*summa / n;
Большое спасибо)
Pablo S вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти среднее арифметическое целых частей элементов числового массива из 30 элементов noobcplusplus Общие вопросы C/C++ 3 02.02.2015 18:30
Найти среднее арифметическое чётных элементов массива Ринка Паскаль, Turbo Pascal, PascalABC.NET 3 21.09.2011 19:29
Найти среднее арифметическое элементов массива [Паскаль] ГениальныйИнФормат Помощь студентам 7 20.12.2010 08:24
найти среднее арифметическое элементов массива состоящее из 5 элементов viatlon Общие вопросы C/C++ 9 12.12.2009 00:45