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

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

Восстановить пароль Регистрация
 
wolf0022
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 148
07.04.2014, 22:39     Не верный результат при обработке одномерного массива #1
Написать программу по обработке одномерных массивов. Размеры массивов вводить с клавиатуры. В консольном приложении предусмотреть возможность ввода данных как с клавиатуры, так и с использованием функции 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++ Ошибка в WHILE при обработке массива
Создание класса по обработке массива. C++
C++ Выполнить сортировку массива по убыванию и проконтролировать ее результат. Произвести подсчет перестановок при сортировке
Выполнить сортировку массива по убыванию и проконтролировать ее результат. Произвести подсчет перестановок при сортировке C++
C++ Задание по обработке массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kiborgdelto
70 / 72 / 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
70 / 72 / 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
Ясно, спасибо.
Yandex
Объявления
07.04.2014, 23:59     Не верный результат при обработке одномерного массива
Ответ Создать тему
Опции темы

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