Форум программистов, компьютерный форум CyberForum.ru

ошибка экзешника - C++

Восстановить пароль Регистрация
 
ДмитрийС
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 5
07.01.2013, 08:58     ошибка экзешника #1
Вообщем при некторых значениях n программа вылетает в чем беда не могу понять.

писал в dev'е

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h> //подключение библеотек
#include<stdlib.h>
#include <time.h>
#include <math.h>
 
int main () 
{
    int n;//объявление переменных
    printf("vvedite n=");//ввод n с клавиатуры
    scanf("%d", &n);
    
    int a[n];
    float S1=0,S2=0,S3=0,S4=0,S5=0;
    
    for (int i=0; i<n; i++)
    {
    a[i]=rand()%n;//автоматическое  заполнение массива
    printf("x=%d\n", a[i]);//вывод каждого эелемета массива на экран
    S1+=a[i];//суммирование элементов массива
    S2=S2*a[i];  //умножение элементов массива
    S3+=1/a[i];     //деление элементов массива                       
    S4+=a[i]*a[i]; //возведение в степень элемнтов массива
        if(a[i]==0){i++;}                       // сумма 5
 
    if((i%2==0)&&(a[i]>0))     // вычисление суммы полож. четных
    S5=S5+a[i];                  
    }
    
S1/=n;// Нахождение среднего арифметического
 
if(S2>=0)
S2=pow(S2,1/n);
else 
printf("S2<0");
S3=n/S3;
 
S4=sqrt(S4/n);
 
printf("S1=%f\n", S1);//Вывод среднего арифметического на экран
 
printf("S2=%f\n", S2);//среднее геометрическое
 
printf("S3=%f\n", S3);//среднее гармоническое
 
printf("S4=%f\n", S4);//среднее квадратичное
 
printf("S5=%f\n", S5);/*Сумму значений положительных и отрицательных элементов выборки,
имеющих четные номера*/
 
system("pause");
return (0);
}
сам экзешник прикладываю.
Вложения
Тип файла: rar 1.rar (4.6 Кб, 4 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2013, 08:58     ошибка экзешника
Посмотрите здесь:

Консольная программа для запуска экзешника с определенным параметром C++
C++ Вылетает ошибка error C2061: синтаксическая ошибка: идентификатор "_TCHAR"
C++ Глупая ошибка, но до сих пор неисправленная ошибка: ";"

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
07.01.2013, 10:09     ошибка экзешника #2
Вот так
Цитата Сообщение от ДмитрийС Посмотреть сообщение
C++
1
int a[n];
делать не правильно. DevC++ это компилирует, потому что там используется компилятор MinGW, у которого есть свои экстеншены, позволяющие это компилировать.
В данном случае память будет выделена на стеке и, возможно, проблема в этом - при больших значениях n массив съедает слишком много стека. Попробуй выделять память динамически, при помощи new.
ДмитрийС
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 5
07.01.2013, 11:53  [ТС]     ошибка экзешника #3
А можете написать, как его применить?
Я понятия не имею как, нас учили писать через int и например программа работает при n=8 при n=4 уже не работает
а при n=2 и 3 работает.
marina2
Рожденная для битвы
 Аватар для marina2
268 / 48 / 4
Регистрация: 08.11.2009
Сообщений: 1,016
07.01.2013, 12:11     ошибка экзешника #4
ДмитрийС, посмотри здесь
Создание динамического массива
Байт
 Аватар для Байт
13951 / 8782 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
07.01.2013, 12:25     ошибка экзешника #5
Попробуй строчку 21 записать так
C
1
S3+=1.0/a[i];
Дело в том, что при твоей прежней записи если все a[i] > 1,
S3 = 0. Чем меньше n, тем больше вероятность такой оказии.
А почему это так - подумай о приведении типов в вычислении арифметических выражений...
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
07.01.2013, 12:34     ошибка экзешника #6
Кстати там еще может быть деление на 0. Т.к. srand() я ни где в коде не вижу, значит постоянно генерится одна и та же последовательность. Отсюда и такое странное повдение - при n = 2 или 3 работает, при 4 не работает, при других бОльших значениях работает. Похоже в этом и есть проблема.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
07.01.2013, 12:42     ошибка экзешника #7
Так и есть
ошибка экзешника
ДмитрийС
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 5
07.01.2013, 15:18  [ТС]     ошибка экзешника #8
вообщем все сделал, но при компиляции выдает ошибку о srand'e указывая в библиотеке stdlib такую строку:
_CRTIMP void __cdecl srand (unsigned int);
ДмитрийС
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 5
07.01.2013, 15:26  [ТС]     ошибка экзешника #9
все сделал теперь работает а чтобы на наоль не делило написал условие теперь появился еше вопрос)

то что на скрине это мусор или что ?
Изображения
 
ДмитрийС
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 5
07.01.2013, 15:37  [ТС]     ошибка экзешника #10
все снова сделал но теперь S3 высчитвает неправильно постоянно ответ 1
Yandex
Объявления
07.01.2013, 15:37     ошибка экзешника
Ответ Создать тему
Опции темы

Текущее время: 01:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru