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

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

Войти
Регистрация
Восстановить пароль
 
wolf0022
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 148
#1

Не верный результат при обработке одномерного массива - C++

07.04.2014, 22:39. Просмотров 240. Ответов 4
Метки нет (Все метки)

Написать программу по обработке одномерных массивов. Размеры массивов вводить с клавиатуры. В консольном приложении предусмотреть возможность ввода данных как с клавиатуры, так и с использованием функции random().
Найти сумму элементов массива, положительных его элементов.


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
//---------------------------------------------------------------------------
#include <clx.h>
#include <iostream.h>
#include <math.h>
#include "Math.hpp"
#include <conio.h>
#include <stdio.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
void main()
{
        int a[15],n, i, kol=0,sum=0,y;
    randomize();
        printf("Input N (<=15) ");
        scanf("%d", &n);
        {printf("AutoComplete - 1, manual input 2 \n");
        scanf("%d", &y);
        if (y==1)
        goto I;
        if (y==2)
        goto B;
        I:puts("\n Massiv A");
        for(i=0; i<n;i++) {
        a[i] = random(15)-15;
        printf("%4d", a[i]);
        for(i=0; i<n;i++)
        if(a[i]>=0)  a[kol++] = a[i];
        puts("\n Rezult massiv A");
        for(i=0; i<kol;i++)
        printf("%4d", a[i]);
        puts("\n Rezultat");
        if (a[i]>=0) {
        for(sum=i=0;i<kol;i++)
        sum+=a[i];};
        printf("%4d", sum);
        goto c;
        B: for (i=0; i<n;i++)
        scanf("%4d", a[i]);
        puts("Massiv A ");
        for (i=0;i<n;i++)
        if(a[i]>=0)  a[kol++] = a[i];
        puts("\n Rezult massiv A");
        for(i=0; i<kol;i++) printf("%4d", a[i]);
        puts("\n Rezultat");
        if (a[i]>=0) sum+=a[i];
        for(sum=i=0;i<kol;i++)
        sum+=a[i];
        printf("%4d", sum);
        goto c; }
        c: puts("\n Press any key ... "); }
        getch();
         }
//---------------------------------------------------------------------------
Проблема заключается в том что: после того как я вставил код по обработке 2 вариантов он мне начал выдавать неверный результат. До этого все было ОК.
Во вложенных файлах 1 рисунок это то что сейчас есть, на втором то на что должен быть похож готовый вариант
Миниатюры
Не верный результат при обработке одномерного массива   Не верный результат при обработке одномерного массива  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2014, 22:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не верный результат при обработке одномерного массива (C++):

результат не верный при решении задачи - C++
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #include &lt;stdio.h&gt; #include...

Ошибка в WHILE при обработке массива - C++
Проблема в коде: #include &lt;fstream.h&gt; #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;vcl.h&gt; #include &lt;windows.h&gt; #include...

Ошибка при обработке массива на нахождение повторяющихся элементов - C++
Доброго времени суток! Вопрос, собственно, к той части программы, где выводятся повторяюшиеся элементы массива. Не всегда, все пов....

C++5 числами из массива при выборе операции показывает результат. (сумма, произведение . элементов массива) - C++
#include &lt;iostream&gt; using namespace std; void main() { int m, i; char type; double res; cout &lt;&lt; &quot;Input 5 numbers&quot; &lt;&lt;...

Неожиданный результат при сравнении производительности вектора и обычного массива - C++
Добрый день. Ради интереса сравнил проиводительность вектора с обычным массивом и получил неожиданный результат. #include &lt;iostream&gt;...

Выполнить сортировку массива по убыванию и проконтролировать ее результат. Произвести подсчет перестановок при сортировке - C++
Количество элементов массива N и границы интервала Хн и Хк вводятся с клавиатуры. Память под массивы выделяется динамически. Элементы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kiborgdelto
71 / 73 / 27
Регистрация: 23.03.2011
Сообщений: 141
07.04.2014, 23:13 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
не буду ничего говарить насчёт goto, но не могу понять зачем кусок кода который обрабатывает массив вставлять 2 раза для каждого метода ввода отдельно? не проще ли сначала ввести а уже потом обработать? оператор goto знаете, а switch вам неизвестен?

вот код рабочей программы выполняющей теже функции
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
#include <iostream>
#include <time.h>
using namespace std;
 
void main()
{
        srand(time(0));
        int a[15],n, i,sum=0,kol=0,y;
        printf("Input N (<=15) ");
        cin>>n;
        cout<<"AutoComplete - 1, manual input 2 \n";
        cin>>y;
 
        switch(y)
        {
        case 1:
            cout<<"\nMassiv A ";
            for(i=0; i<n;i++) {
                a[i] = rand()%15-7;
                cout<< a[i]<<" ";
            }
            break;
        case 2:
            for (i=0; i<n;i++)
            cin>> a[i];
            cout<<"\nMassiv A  ";
            for(i=0; i<n;i++) 
                cout<< a[i]<<" ";
            break;
        default: 
            cout<<endl;
            system("pause");
            exit(0);
        }
 
        for(i=0; i<n;i++)
            if(a[i]>0)  a[kol++]=a[i];
        cout<<"\nResult massiv A  ";
        for(i=0; i<kol;i++) 
            cout<< a[i]<<" ";
        cout<<endl;
 
        for(i=0; i<kol;i++)
     sum+=a[i];
        cout<<"\nRezultat ";
        cout<<sum<<endl;
        system("pause");
         }
wolf0022
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 148
07.04.2014, 23:31  [ТС] #3
Да известен) Я вижу что ваш код вроде рабочий, но с ним кодом у меня проблема.
[Linker Error] Unresolved external '__InitVCL' referenced from E:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
[Linker Error] Unresolved external '__ExitVCL' referenced from E:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
kiborgdelto
71 / 73 / 27
Регистрация: 23.03.2011
Сообщений: 141
07.04.2014, 23:44 #4
Цитата Сообщение от wolf0022 Посмотреть сообщение
BORLAND
я использую Visual Studio 2010, в борланде насколько я знаю будут проблемы с некоторыми функциями
wolf0022
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 148
07.04.2014, 23:59  [ТС] #5
Ясно, спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 23:59
Привет! Вот еще темы с ответами:

Выполнить сортировку массива по убыванию и проконтролировать ее результат. Произвести подсчет перестановок при сортировке - C++
3.1) Количество элементов массива N и границы интервала Хн и Хк вводятся с клавиатуры. Память под массивы выделяется динамически. Элементы...

Задание по обработке массива - C++
Приветствую, товарищи! У меня только начался курс по С и нам дали задание по обработке массива и звучит оно так: Вывести номер первого...

Создание класса по обработке массива. - C++
Помогите, пожалуйста решить!!! Задание: Напишите программу по обработке массива, как объекта созданного Вами класса &quot;Массив&quot; и...

Создание класса по обработке данных массива - C++
Добрый день!!!Помогите в решении задачи на массивы. А то в них вообще бум-бум.. Нужно написать программу по обработке массива, как...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.04.2014, 23:59
Ответ Создать тему
Опции темы

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