Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47

Работа с массивами (Крешится программа)

02.05.2012, 19:59. Показов 958. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вычислить суму ряда с помощью цикла. Значение n вводится с клавиатуры.
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
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
void main ()
{
    int i,n;
    float s1,s2,s=0;
    printf("Type n:\n");
    scanf("%d",&n);
    int*a=new int [n];
    for (i=0; i<n;i++) 
        a[i]=rand()%10;
    int*b=new int[n];
    for(i=0;i<n;i++)
        b[i]=rand()%10;
    i=0, s1=0; //Öèêë ñ ïðåäóñëîâèåì
    while (i<(n-5))
    {
        s1+=(a[i]/(b[i]-5));
        i++;
    }
    i=(n-2),s2=0;
    while (i<n)
    {
        s1+=sqrt(b[i]*a[i]);
        i++;
    }
    printf("Result=%f",(s1+s2));
}
При запуске, после ввода n программа крешится. Вроде все проверил, ничего не помогает.
Задание во вложении
Миниатюры
Работа с массивами (Крешится программа)  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2012, 19:59
Ответы с готовыми решениями:

программа с массивами
Всем привет. Не получается скомпилировать прогу, выдаёт ошибку что то типа ошибка в переменной Программа с циклами.. Немного о...

программа с массивами
помогите,пожалуйста, студенту написать прогу на си. Такая вот задача Дан одномерный массив А, состоящий из N элементов. Исключить из...

Программа с Массивами!
Помогите пожалуйста составить программу Дано два одномерных массива, получить третий, являющийся сортированными элементами первого и...

12
41 / 41 / 5
Регистрация: 29.04.2012
Сообщений: 185
02.05.2012, 22:16
во первых
int main () а во вторых, просто вопрос, зачем тебе переменная s? где используется?

Добавлено через 1 минуту
C++ (Qt)
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
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main ()
{
    int i,n;
    float s1,s2=0;
    printf("Type n:\n");
    scanf("%d",&n);
    int*a=new int [n];
    for (i=0; i<n;i++)
        a[i]=rand()%10;
    int*b=new int[n];
    for(i=0;i<n;i++)
        b[i]=rand()%10;
    i=0, s1=0; //Цикл с предусловием
    while (i<(n-5))
    {
        s1+=(a[i]/(b[i]-5));
        i++;
    }
    i=(n-2),s2=0;
    while (i<n)
    {
        s1+=sqrt(b[i]*a[i]);
        i++;
    }
    printf("Result=%f",(s1+s2));
    getch();
}
0
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
02.05.2012, 22:25  [ТС]
s осталось от старой версии кода, где s было s1+s2
просто забыл про нее)
сейчас попробую вашу программу, спасибо

Добавлено через 5 минут
так же крешится
как я заметил при значениях n >= 8
0
41 / 41 / 5
Регистрация: 29.04.2012
Сообщений: 185
02.05.2012, 22:43
в общем смотри, при 3ем прохождении цикла
C++ (Qt)
1
2
3
4
5
    while (i<(n-5))
    {
        s1+=(a[i]/(b[i]-5));
        i++;
    }
получается там деление на 0 (через отладчик глянул)

Добавлено через 1 минуту
Можешь просто сделать проверку, что есть b[i]==0 то чтобы начинал другой виток, или чтобы выходило сообщение об ошибке, что невозможно посчитать

Добавлено через 7 минут
Вообще не будущее советую делать проверки, например, что будет если я введу -1 в твою программу, или 0, а если есть деление, как здесь, то вообще лучше предохраняться от деления на 0 заранее.
1
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
02.05.2012, 22:51  [ТС]
я, кстати, так и подумал
но почему каждый раз крешится, значит программа генерирует "одинаковые случайные числа" каждый раз?
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
02.05.2012, 22:51
http://liveworkspace.org/code/... 79cab33733


Цитата Сообщение от dekartkaine Посмотреть сообщение
a[i]=rand()%10;
C
1
a[i] = (rand() % 10) + 1;
и т.д.
0
41 / 41 / 5
Регистрация: 29.04.2012
Сообщений: 185
02.05.2012, 23:09
Цитата Сообщение от dekartkaine Посмотреть сообщение
я, кстати, так и подумал
но почему каждый раз крешится, значит программа генерирует "одинаковые случайные числа" каждый раз?
Это называется ПСЕВДОслучайные числа. Чтобы такого не получалось, сделай так.

C++ (Qt)
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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main ()
{
    int i,n;
    float s1,s2=0;
    printf("Type n:\n");
    scanf("%d",&n);
    int*a=new int [n];
    for (i=0; i<n;i++)
        a[i]=rand()*RAND_MAX*10%10;
    int*b=new int[n];
    for(i=0;i<n;i++)
        b[i]=rand()*RAND_MAX*10%10;
    i=0, s1=0; //Цикл с предусловием
    while (i<(n-5))
    {
        if (b[i]==5)
        {
            printf("Devide by zero. Error.");
            exit(0);
        }
        s1+=(a[i]/(b[i]-5));
        i++;
    }
    i=(n-2),s2=0;
    while (i<n)
    {
        s1+=sqrt(b[i]*a[i]);
        i++;
    }
    printf("Result=%f",(s1+s2));
    getch();
}
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
02.05.2012, 23:12
Цитата Сообщение от Buildog Посмотреть сообщение
a[i]=rand()*RAND_MAX*10%10;
А толку?
0
41 / 41 / 5
Регистрация: 29.04.2012
Сообщений: 185
02.05.2012, 23:13
Ну для a[i] не было смысла, я просто так добавил, для b[i] это актуально будет. Хотя если для a[i] это убрать, то там результат не получается.
0
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
02.05.2012, 23:24  [ТС]
Вроде бы работает, но почему то в случае ошибки выдает не сообщение об ошибке, как должен.
А пишет вот это.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
02.05.2012, 23:30
dekartkaine, это NaN.
0
41 / 41 / 5
Регистрация: 29.04.2012
Сообщений: 185
02.05.2012, 23:37
Это происходит из за извлечения корня из отрицательного числа, добавь 2 условия
C++ (Qt)
1
2
        if (b[i]<0) b[i]=-b[i];
        if (a[i]<0) a[i]=-a[i];
перед вычислением корня в конце
0
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
03.05.2012, 00:00  [ТС]
так можно тогда же просто модуль под корень поставить

Добавлено через 14 секунд
вобщем спасибо за помощь, разобрался)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.05.2012, 00:00
Помогаю со студенческими работами здесь

Программа с динамическими массивами
Срочно нужна помощь напишите программу. Я ничего не понимаю помогите и напишите комментарии с объяснением пожалуйста Составить...

Dev-C++ Программа с массивами
По неработающему образцу (данному учителем) написала программу. Как следствие: прога тоже нерабочая вышла. Образец (Пример ввода 5...

Работа с массивами
Задание такое: 1. Создайте массив для хранения информации о сотрудниках (имя, фамилия, возраст, адрес, телефон, выручка за день). ...

Работа с массивами
В одномерном массиве, состоящем из N целых элементов, вычислить: 1) минимальный по модулю элемент массива; 2) сумму модулей элементов...

Работа с массивами ?
Вообщем то, не могу понять как с массивами в 1С работать пишу так перем mas1; -собственно массив :( а как его инициализировать?...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru