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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2013, 16:07   #11
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Код:
scanf("%d", &mass[i]);
Скажите а имя массива это не адрес? А индекс i не смещение?
& необходим?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 14.03.2013, 17:15   #12
ezhidudek
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 43
По умолчанию

Abstraction,
спасибо,а как эту дисперсию в данный код втыкнуть??
ezhidudek вне форума Ответить с цитированием
Старый 14.03.2013, 17:40   #13
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Скажите а имя массива это не адрес? А индекс i не смещение?
Имя - адрес (гм... в некотором роде и если не вдаваться в тонкости). i - смещение. [] - разыменование указателя. *mass и mass[0] - это одно и то же. Хотите получить адрес - прибавляйте к одному другое без всяких квадратных скобочек, как указано в альтернативном примере.
Ну, а поскольку scanf, как и любая функция с эллипсисом, не в состоянии разобраться, что ей там скормили на самом деле - она берёт переданное значение mass[i] (которое мы перед этим предусмотрительно установили в 0), трактует его как адрес и пытается по нему чего-то записать. Результат... предсказуем.

Цитата:
спасибо,а как эту дисперсию в данный код втыкнуть??
Ну, вот так и воткнуть, вмешавшись в процесс подсчёта суммы:
Код:
float s1=0, s2=0;
for(i = 0; i < SIZE; i++)
	{
		printf(" [%d] - ", i);
		scanf("%d", mass[i]);
		s1 += mass[i];
		s2 += mass[i]*mass[i];
	}
float D = sqrt((s2-s1)/(SIZE-1));
Формула взята из поста Sciv.
Abstraction вне форума Ответить с цитированием
Старый 14.03.2013, 21:11   #14
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Abstraction спасибо, дельные замечания... К сожалению отзыв оставить не могу...
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 15.03.2013, 02:35   #15
ezhidudek
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 43
По умолчанию

Abstraction,
спасибо Вам большое =) хорошего вечера !
ezhidudek вне форума Ответить с цитированием
Старый 15.03.2013, 14:23   #16
ezhidudek
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение

Ну, вот так и воткнуть, вмешавшись в процесс подсчёта суммы:
Код:
float s1=0, s2=0;
for(i = 0; i < SIZE; i++)
	{
		printf(" [%d] - ", i);
		scanf("%d", mass[i]);
		s1 += mass[i];
		s2 += mass[i]*mass[i];
	}
float D = sqrt((s2-s1)/(SIZE-1));
Формула взята из поста Sciv.

скажите,в чем ошибка?дисперсия выходит примерно в тысячу раз больше.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <cmath>

#define SIZE	5

int main()
{
    
	int i,s1,s2;
	int	mass[SIZE] = {0};
	int summa = 0;
	
	system("chcp 1251 > nul");
	
	printf("\n vvedite massiv iz  %d elementov: \n", SIZE);
	for(i = 0; i < SIZE; i++)
	{
		printf(" [%d] - ", i);
	scanf("%d", &mass[i]);
		summa += mass[i];
		
		float s1=0, s2=0;

		s1 += mass[i];
		s2 += mass[i]*mass[i];
	}
float D = sqrt((s2-s1)/(SIZE-1));
	
	printf("\n rezultaty \n");
printf(" srednee arifmeticheskoe %f\n", (float)(summa) / i);
printf("dispersija ravna %f \n",(float)D );


	system ("pause");
	return 0;
}
ezhidudek вне форума Ответить с цитированием
Старый 15.03.2013, 14:39   #17
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Подозреваю, что в том, что формула на самом деле должна быть немного другая, ибо нынешняя считает что-то странное...
Но это вопрос, в общем-то, к Вам - что имеется в виду под "дисперсией для выборки". Это понятие можно трактовать несколькими способами.
Abstraction вне форума Ответить с цитированием
Старый 15.03.2013, 14:42   #18
ezhidudek
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Подозреваю, что в том, что формула на самом деле должна быть немного другая, ибо нынешняя считает что-то странное...
Но это вопрос, в общем-то, к Вам - что имеется в виду под "дисперсией для выборки". Это понятие можно трактовать несколькими способами.
вот смотрите,вот конкретно эту ссылку мне дал препод на вопрос,какая именно дисперсия нужна.
http://cs.wikipedia.org/wiki/Rozptyl_(statistika)
она на чешском.сбоку есть и русская,и английская.так как иногда вики-языки отличаются данными,может лучше посмотреть прямо на чешском?
ezhidudek вне форума Ответить с цитированием
Старый 15.03.2013, 15:03   #19
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ну так там математическое ожидание случайной величины, а у Вас величины-то и нет.
Но, в терминах программы, если считать, что x - случайная величина, которая принимает только значения из нашей выборки равновероятным образом, то E(x) - это s1/SIZE; E(x^2) - это s2/SIZE. D(x), соответственно, s2/SIZE - (s1*s1/(SIZE*SIZE)).
Abstraction вне форума Ответить с цитированием
Старый 15.03.2013, 15:30   #20
ezhidudek
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Ну так там математическое ожидание случайной величины, а у Вас величины-то и нет.
Но, в терминах программы, если считать, что x - случайная величина, которая принимает только значения из нашей выборки равновероятным образом, то E(x) - это s1/SIZE; E(x^2) - это s2/SIZE. D(x), соответственно, s2/SIZE - (s1*s1/(SIZE*SIZE)).
еще больше получается..сейчас пошлю ему этот код,посмотрим,что ответит.
ezhidudek вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пусть вводится последовательность чисел, которая заканчивается нулем. Найдите среднее арифметическое четных чисел. d_dima Помощь студентам 3 13.03.2013 12:17
Найти среднее арифметическое чисел, принадлежащих промежутку [A,B) и количество положительных чисел, стоящих на местах, кратных 4. edgeks Помощь студентам 0 18.11.2012 15:35
Найти среднее арифметическое их квадратов и среднее арифметическое их модулей. (Турбо паскаль) erte Помощь студентам 1 30.10.2012 13:08
С++ Найти среднее арифметическое положительных и среднее арифметическое отрицательных чисел, минимальное по модулю число. Юрик 530 Помощь студентам 4 03.12.2011 16:26
Вводится 10 чисел. Найти среднее арифметическое положительных чисел и произведение отрицательных. Руся93 Помощь студентам 14 02.10.2011 13:12