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

что не так в программе? Виснет при компиляции - C++

Восстановить пароль Регистрация
 
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
19.06.2011, 01:02     что не так в программе? Виснет при компиляции #1
Найти в массиве:
1) сумму элементов с нечётными номерами
2) Сумму элементов между первым и последним отрицательными элементами
3) в массиве отрицательные элементы заменить нулями и переставить в конец
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
#include<iostream.h>
#include<math.h>
void main() {
int i_perv, i_posled, i, j;
double sum,summ,temp;
double*a=new double [10];
sum=0;
summ=0;
cout<<"Исходный массив:";
for(i=1;i<=10;i++)
{cin>>a[i];}
for(i=1;i<=10;i+=2) //тут считаю сумму с нечётными номерами
{sum+=a[i];}
cout<<"\nСумма с нечёт.номерами: "<<sum;
 
for(i=1;i<=10;i++) //тут определяю номер первого отрицательного элемента
{if (a[i]<0) {i_perv=i;
                return;}}
for(i=1;i<=10;i++) // тут определяю номер последнего отрицательного элемента
{if (a[i]<0) i_posled=i;}
 
for(i=(i_perv+1);i<(i_posled-1);i++) // тут просчитываю сумму элементов между первым и последним отрицательными
{summ=summ+a[i];}
cout<<"\nсумма между отр. "<<summ;
 
for(i=1;i<=10;i++)// меняю местами цифры, которые нулями заменяются
{if (a[i]<0) a[i]=0;}
for(i=1;i<=9;i++)
{if (a[i]==0) for(j=1;j<=9;j++)
                    {temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;}}
cout<<"\nПолученный массив: ";
for(i=1;i<=10;i++)
{cout<<a[i]<<" ";
}}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2011, 01:02     что не так в программе? Виснет при компиляции
Посмотрите здесь:

ошибка в программе, что не так.. C++
C++ Что не так в программе? (цикл While)
C++ Ошибка в программе при компиляции
программа виснет, не знаю что не так C++
Geany виснет при компиляции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Daemon025
 Аватар для Daemon025
380 / 329 / 67
Регистрация: 06.12.2010
Сообщений: 900
19.06.2011, 01:12     что не так в программе? Виснет при компиляции #2
Замените на
C++
1
2
int main()
return 0;
Добавлено через 1 минуту
Динамическую память следует освобождать в конце
C++
1
delete[] a;
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.06.2011, 01:13     что не так в программе? Виснет при компиляции #3
И индексирование неправильное. Индексы начинаются с нуля.
Все циклы надо привести к виду
C++
1
for (i=0;i<10;i++)
Daemon025
 Аватар для Daemon025
380 / 329 / 67
Регистрация: 06.12.2010
Сообщений: 900
19.06.2011, 01:13     что не так в программе? Виснет при компиляции #4
Цитата Сообщение от Дарья Дмитренко Посмотреть сообщение
{if (a[i]<0) {i_perv=i;
return;}}
и что здесь делает return?
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
19.06.2011, 01:15  [ТС]     что не так в программе? Виснет при компиляции #5
с индексами порядок
потому что считаются нечётные индексы
разница - от 0 до <10 или от 1 до <=10?

Добавлено через 42 секунды
с break тоже не работает. Я с Паскаля переводила
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.06.2011, 01:17     что не так в программе? Виснет при компиляции #6
Разница в том, что в массиве из 10 элементов элемента a[10] не существует.
Там где нечётные индексы пусть с 1 считаются. Но пока i < 10
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
19.06.2011, 01:20  [ТС]     что не так в программе? Виснет при компиляции #7
Блин, всё равно...
Может Борланд запоротый?

Добавлено через 1 минуту
во, заработало)))
но считает не правильно(
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.06.2011, 01:20     что не так в программе? Виснет при компиляции #8
Ну давай сюда новый вариант. Правда форматирование отвратительное
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
19.06.2011, 01:23  [ТС]     что не так в программе? Виснет при компиляции #9
извините, я не гений программирования, так как девушка немного... =)
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
#include<iostream.h>
#include<math.h>
#include<conio.h>
void main()
{int i_perv, i_posled, i, j;
double sum,summ,temp;
double*a=new double [10];
sum=0;
summ=0;
cout<<"Исходный массив:";
for(i=0;i<10;i++)
{cin>>a[i];}
for(i=0;i<10;i+=2)
{sum+=a[i];}
cout<<"\nСумма с нечёт.номерами: "<<sum;
 
for(i=0;i<10;i++)
{if (a[i]<0) {i_perv=i;
                break;}}
for(i=0;i<10;i++)
{if (a[i]<0) i_posled=i;}
 
for(i=(i_perv+1);i<(i_posled-1);i++)
{summ=summ+a[i];}
cout<<"\nсумма между отр. "<<summ;
 
for(i=0;i<10;i++)
{if (a[i]<0) a[i]=0;}
for(i=0;i<9;i++)
{if (a[i]=0) for(j=0;j<9;j++)
                    {temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;}}
cout<<"\nПолученный массив: ";
for(i=0;i<10;i++)
{cout<<a[i]<<" ";
}}
Daemon025
 Аватар для Daemon025
380 / 329 / 67
Регистрация: 06.12.2010
Сообщений: 900
19.06.2011, 01:29     что не так в программе? Виснет при компиляции #10
Цитата Сообщение от Дарья Дмитренко Посмотреть сообщение
for(i=0;i<10;i++)
{if (a[i]<0) {i_perv=i;
break;}}
for(i=0;i<10;i++)
{if (a[i]<0) i_posled=i;}
Здесь i_perv==i_posled, поэтому следует изменить
C++
1
2
3
4
5
for(i=0;i<10;i++)
{if (a[i]<0) {i_perv=i;
                                break;}}
for(i=10;i>0;i--)
{if ((a[i]<0) && (i_perv != i)) i_posled=i;}
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
19.06.2011, 01:30  [ТС]     что не так в программе? Виснет при компиляции #11
к сожалению, не работает(((

Добавлено через 12 секунд
вернее неправильно работает
Daemon025
 Аватар для Daemon025
380 / 329 / 67
Регистрация: 06.12.2010
Сообщений: 900
19.06.2011, 01:31     что не так в программе? Виснет при компиляции #12
Цитата Сообщение от Дарья Дмитренко Посмотреть сообщение
for(i=(i_perv+1);i<(i_posled-1);i++)
{summ=summ+a[i];}
cout<<"\nсумма между отр. "<<summ;
не всегда могут быть 2 отр. элемента
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
19.06.2011, 01:32  [ТС]     что не так в программе? Виснет при компиляции #13
задание предусматривает, что их должно быть минимум два
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.06.2011, 01:33     что не так в программе? Виснет при компиляции #14
Если можно, дальше вот с таким форматированием. Ну или с подобным.
Исправил сумму (без исправления Daemon025)
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
53
54
55
56
57
58
59
60
61
62
#include<iostream.h>
#include<math.h>
#include<conio.h>
 
int main()
{
    int i_perv, i_posled, i, j;
    double sum,summ,temp;
    double*a=new double [10];
    sum=0;
    summ=0;
    cout<<"Исходный массив:";
    for(i=0;i<10;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<10;i+=2)
    {
        sum+=a[i];
    }
    cout<<"\nСумма с нечёт.номерами: "<<sum;
 
    for(i=0;i<10;i++)
    {
        if (a[i]<0)
        {
            i_perv=i;
            break;
        }
    }
    for(i=0;i<10;i++)
    {
        if (a[i]<0) i_posled=i;
    }
 
    for(i=(i_perv+1);i<i_posled;i++)
    {
        summ=summ+a[i];
    }
    cout<<"\nсумма между отр. "<<summ;
 
    for(i=0;i<10;i++)
    {
        if (a[i]<0) a[i]=0;
    }
    for(i=0;i<9;i++)
    {
        if (a[i]=0)
            for(j=0;j<9;j++)
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
    }
    cout<<"\nПолученный массив: ";
    for(i=0;i<10;i++)
    {
        cout<<a[i]<<" ";
    }
    delete [] a;
}
Осталось только последнее исправить
Daemon025
 Аватар для Daemon025
380 / 329 / 67
Регистрация: 06.12.2010
Сообщений: 900
19.06.2011, 01:34     что не так в программе? Виснет при компиляции #15
Цитата Сообщение от Дарья Дмитренко Посмотреть сообщение
вернее неправильно работает
что именно не правильно?

Добавлено через 41 секунду
grizlik78, так гораздо лучше читается
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.06.2011, 01:41     что не так в программе? Виснет при компиляции #16
Вот здесь неправильно
C++
1
        if (a[i]=0)
это присваивание. А сравнение вот так:
C++
1
        if (a[i]==0)
Добавлено через 7 минут
Вот этот, вроде, рабочий
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
53
54
55
56
57
58
59
60
61
62
63
64
65
#include<iostream.h>
#include<math.h>
#include<conio.h>
 
int main()
{
    int i_perv, i_posled, i, j;
    double sum,summ,temp;
    double*a=new double [10];
    sum=0;
    summ=0;
    cout<<"Исходный массив:";
    for(i=0;i<10;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<10;i+=2)
    {
        sum+=a[i];
    }
    cout<<"\nСумма с нечёт.номерами: "<<sum;
 
    for(i=0;i<10;i++)
    {
        if (a[i]<0)
        {
            i_perv=i;
            break;
        }
    }
    for(i=0;i<10;i++)
    {
        if (a[i]<0)
            i_posled=i;
    }
 
    for(i=(i_perv+1);i<i_posled;i++)
    {
        summ=summ+a[i];
    }
    cout<<"\nсумма между отр. "<<summ;
 
    for(i=0;i<10;i++)
    {
        if (a[i]<0)
            a[i]=0;
    }
    for(i=0;i<9;i++)
    {
        if (a[i]==0)
            for(j=i;j<9;j++)
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
    }
    cout<<"\nПолученный массив: ";
    for(i=0;i<10;i++)
    {
        cout<<a[i]<<" ";
    }
    delete [] a;
    return 0;
}
Цикл в строке 51 начинается теперь с i
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
19.06.2011, 01:45  [ТС]     что не так в программе? Виснет при компиляции #17
огромное всем пребольшое спасибище!!!!!!!!!!!!!!!!!!!!!
работает!!!
ура-ура-ура!!!!
Paladinm
45 / 0 / 1
Регистрация: 24.11.2009
Сообщений: 19
19.06.2011, 03:31     что не так в программе? Виснет при компиляции #18
Daemon025,
Здравствуйте,вы могли мне объяснить,что это за ошибка в inno setup и как её решить:
comma (',') expected -я понимаю нужна запятая
ошибка в этой строке: MyError:=false;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2011, 09:38     что не так в программе? Виснет при компиляции
Еще ссылки по теме:

C++ Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ)
C++ Ошибка при компиляции в программе с русскими символами
что я не дописал так как после компиляции не могу ввести текст ! C++

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

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.06.2011, 09:38     что не так в программе? Виснет при компиляции #19
Кода не видел, но
Pascal
1
MyError:=false;
Это как бы паскаль
На си будет так
C++
1
MyError=false;
Yandex
Объявления
19.06.2011, 09:38     что не так в программе? Виснет при компиляции
Ответ Создать тему
Опции темы

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