Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Дарья Дмитренко
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 44
#1

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

19.06.2011, 01:02. Просмотров 794. Ответов 18
Метки нет (Все метки)

Найти в массиве:
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]<<" ";
}}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2011, 01:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос что не так в программе? Виснет при компиляции (C++):

Что-то не так в программе (при нажатии кнопок со стрелками по консоли движется символ) - C++
Решил спустя некоторый промежуток времени попрактиковаться в c++. Написать программу, где при нажатии кнопок со стрелками по консоли...

Geany виснет при компиляции - C++
Всем здравствуйте. Только начал изучать C++ и среду разработки себе выбрал Geany, но есть такая проблема, любые, даже очень простые...

программа виснет, не знаю что не так - C++
Дана квадратная целочисленная матрица. Определить, является ли она магическим квадратом. В магическом квадрате сумма чисел по всем...

Что в программе делает так, что процессор грузится на 100%? - C++
Я не очень разбираюсь в С++, поэтому прошу вашей подсказки по поводу нагрузки на процессор. Вот код программы, на компьютере жрет всю...

Ошибка в программе при компиляции - C++
Добрый вечер!!! Рябят, подскажите кто нибудь пожалуйста, что за ошибка в программе вылазиет при компиляции???? Заранее благодарю!!!!!!!!

что я не дописал так как после компиляции не могу ввести текст ! - C++
Дан текст; если в нем нет малых латинских букв, то оставить его без изменения, иначе каждый из символов, следующих за первой группой...

18
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;
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
19.06.2011, 01:13 #3
И индексирование неправильное. Индексы начинаются с нуля.
Все циклы надо привести к виду
C++
1
for (i=0;i<10;i++)
0
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 / 0
Регистрация: 10.02.2011
Сообщений: 44
19.06.2011, 01:15  [ТС] #5
с индексами порядок
потому что считаются нечётные индексы
разница - от 0 до <10 или от 1 до <=10?

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

Добавлено через 1 минуту
во, заработало)))
но считает не правильно(
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
19.06.2011, 01:20 #8
Ну давай сюда новый вариант. Правда форматирование отвратительное
0
Дарья Дмитренко
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]<<" ";
}}
0
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 / 0
Регистрация: 10.02.2011
Сообщений: 44
19.06.2011, 01:30  [ТС] #11
к сожалению, не работает(((

Добавлено через 12 секунд
вернее неправильно работает
0
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 / 0
Регистрация: 10.02.2011
Сообщений: 44
19.06.2011, 01:32  [ТС] #13
задание предусматривает, что их должно быть минимум два
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
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;
}
Осталось только последнее исправить
0
Daemon025
380 / 329 / 67
Регистрация: 06.12.2010
Сообщений: 900
19.06.2011, 01:34 #15
Цитата Сообщение от Дарья Дмитренко Посмотреть сообщение
вернее неправильно работает
что именно не правильно?

Добавлено через 41 секунду
grizlik78, так гораздо лучше читается
0
19.06.2011, 01:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2011, 01:34
Привет! Вот еще темы с ответами:

Ошибка при компиляции в программе с русскими символами - C++
Пытаюсь сделать задание из соседней ветки. Вот код: #include &lt;iostream&gt; int cnt_rus(const wchar_t * line, const wchar_t * rus_line) ...

ошибка в программе, что не так.. - C++
Хотелось бы узнать, что я сделала не так.. Задание: последовательность а1а2... образована по принципу: an=(1-1/2)(1-1/3)...(1-1/(n+1))...

Что не так в программе? (цикл While) - C++
Условие: Написать программу, которая находит сумму всех целых нечетных чисел в диапазоне, указанном пользователем. #include &lt;iostream&gt;...

что не так в программе, выдает ошибку... - C++
помогите разобраться, пожалуйста, что не так?


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru