0 / 0 / 0
Регистрация: 28.11.2014
Сообщений: 13
1

При вводе массива, на консоль выводятся совершенно одинаковые большие числа

24.12.2014, 13:35. Показов 1103. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При вводе массива, в 4м задании на консоль выводятся совершенно одинаковые большие числа.
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#include <iostream>
#include <conio.h>
#include <math.h>
#include <time.h>
#include <fstream>
 
using std::cout;
using std::cin;
using std::endl;
using std::ifstream;
 
 
const int N=100;
 
unsigned int mac1(int n, int A[])
{
    int a,b;
    cout << "Введите границы массива через пробел: ";
    cin >> a >> b;
    unsigned srand(time(NULL));
        {
            for (int i=0; i<n; i++){A[i]=rand()%(b-a+1)+a;}
            cout << endl;
            for (int i=0; i<n; i++){cout << i+1 << " Элемент массива = " << A[i] << endl;}
        }
    return 1;
}
int mac2(int n, int A[])
{
    cout << "Введите " << n << " элементов массива через пробел: ";
    for (int i=0; i<n; i++) cin >> A[i];
    cout << endl << "Вы ввели следующий массив: " << endl;
    cout << endl;
    for (int i=0; i<n; i++) {cout << i+1 << " Элемент массива = " << A[i] << endl;}
    return 1;
}
int mac3(char Name[], int n, int A[])
{
    int x;
    char i;
    ifstream func(Name);
    if (!func) {cout << "Error\n"; return 0;};
    for (i=0; i<n; i++)
        {
            func >> x; A[i]=x;
        }
    func.close();
    cout << endl << "Вы ввели следующий массив: " << endl;
    cout << endl;
    for (i=0; i<n; i++) {cout << i+1 << " Элемент массива = " << A[i] << endl;}
    return 1;
}
 
void main(void)
{
    setlocale(LC_ALL, "Russian"); 
    int n, mac,ex, A[N], B[N], C[N];
    cout << "\t\t\t\tЗадание №1" << endl << endl;
    cout << "Введите размер матрицы: ";
    cin >> n;
    while (n<1 || n>N)
        {
            cout << "Вы ввели неккоректный размер матрицы. Размер матрицы должен быть от 1 до " << N << " " << endl;
            cout << "Введите размер матрицы: ";
            cin >> n;
        }
    cout << endl;
    cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
    cout << "Способы заполнения массива:" << endl;
    cout << "1. С помощью датчика случайных чисел." << endl;
    cout << "2. Ввод значений с клавиатуры." << endl;
    cout << "3. Заполнение из файла." << endl;
    cout << "0. Завершение работы." << endl;
    cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
    cout << "Выберите способ заполнения массива: ";
    cin >> mac;
    switch (mac)
        {
            case 1: mac1 (n, A); break;
            case 2: mac2 (n, A); break;
            case 3: mac3 ("Output.txt", n, A); break;
            case 0: system("exit");
            default: if (mac !=0) cout << "Нет такого варианта";
        }
 
    cout << endl << "\t\t\t\tЗадание №2" << endl;
    int c=0;
    double sum=0.0;
    for (int i=0; i<n; i++)
        {
            if (A[i]<0)
            {
                sum=sum+A[i];
                c=c+1;
            }
        }
    if (c !=0) cout << "Среднее арифметическое отрицательных элементов массива равно " << (sum/c) << endl;
    else cout << "В данном массиве нет отрицательных элементов" << endl;
 
    cout << endl << "\t\t\t\tЗадание №3" << endl;
    int n2=0;
    int i2=0;
    for (int i=0; i<n; i++)
        {
            if (A[i]>9 && A[i]<100)
            {
                B[i2]=A[i];
                n2=n2+1;
                i2=i2+1;
                for (int j=i; j<n-1; j++)
                    A[j]=A[j+1];
                i--;
                n--;
            }
        }
    for (int i=0; i<n; i++) cout << i+1 << " Элемент массива = " << A[i] << endl;
    cout << endl;
    for (int i2=0; i2<n2; i2++) cout << i2+1 << " Элемент массива = " << B[i2] << endl;
    
    cout << endl << "\t\t\t\tЗадание №4" << endl;
    int max=A[0];
    int i3=0, n3=2;
    for (int i=1; i<n; i++) if (max<A[i]) max=A[i];
    cout << "Максимальный элемент первого массива: " << max << endl;
    for (int i2=0; i2<n2; i2++)
        {
            C[i3]=B[i2]; i3++;
            if (B[i2]>0)
            {
                C[i3]=max; i3++;
            }
        }
    for (int i=0; i<i3; i++) cout << i+1 << " Элемент массива = " << C[i3] << endl;
 
    cout << endl << "\t\t\t\tЗадание №5" << endl;
    cout << "Размер первого массива " << n << endl;
    cout << "Размер второго массива " << n2 << endl;
    if (n>n2)
    {
        cout << "Сортируем первый массив" << endl;
        for (int i=0; i<n; i++){
            for (int j=0; j<n-i-1; j++){
                if (A[j]>A[j+1]){
                    int tmp=A[j]; A[j]=A[j+1]; A[j+1]=tmp;
                }
            }
        }
        for (int i=0; i<n; i++) cout << i+1 << " Элемент массива = " << A[i] << endl;
    }
    else
    {
        cout << "Сортируем второй массив" << endl;
        for (int i2=0; i2<n2; i2++){
            for (int j=0; j<n2-i2-1; j++){
                if (B[j]>B[j+1]){
                    int tmp=B[j]; B[j]=B[j+1]; B[j+1]=tmp;
                }
            }
        }
        for (int i2=0; i2<n2; i2++) cout << i2+1 << " Элемент массива = " << B[i2] << endl;
    }
    cout << endl;
    cout << "\t\t\t\tПрограмма завершена.";
    _getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2014, 13:35
Ответы с готовыми решениями:

При выводе массива на консоль выводятся также и большое отрицательное число
Задание: Преобразовать массив целых чисел Х по следующему правилу: элементы массива Х циклически...

Закрывается консоль при вводе первого элемента массива
ребят, когда ввожу первый элемент массива, то закрывается консоль! что не так? program Project2;...

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

Числа выводятся на консоль в виде -1.#IO
Прилагаю код. При изменении точности вывода меняются лишь буквы- -1.#IND, -1.#IND0, -1. #IND00 и т....

1
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
24.12.2014, 15:06 2
BaZzilio, два варианта, либо массив пуст, либо наблюдается выход за границы массива.
Не знаю ваш ход мыслей, но мне кажется, что в 130-ой строчке инкремент i3 лишний.
1
24.12.2014, 15:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2014, 15:06
Помогаю со студенческими работами здесь

При выгрузке из БД выводятся одинаковые книги
Здравствуйте! Возникла задача, как сгруппировать значения из БД, если допустим выводится...

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt;...

Операции с разными числовыми типами. Если на вход подаются большие числа (типа 1000), то выводятся нули
Решил одну задачу, на вход подаются 3 числа (через пробел) выводятся 2 с плавающей точкой. Все...

Вывести массив, притом что одинаковые числа выводятся один раз
Есть массив с некоторыми элементами и некоторые из них повторяются, нужно вывести этот массив,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru