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

Массивы (нужен совет) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?) http://www.cyberforum.ru/cpp-beginners/thread717839.html
Помогите доработать программу В заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных элементов. Удалить из массива два первых простых числа. Проверить, изменилась ли...
C++ указатели (матрица, найти наибольший из элементов) дана вещественная матрица n*n .В строках с отрицательным элементом на главной диагонали найти наибольший из элементов. с помощью указателей) http://www.cyberforum.ru/cpp-beginners/thread717822.html
Без операторов цикла вывести цифры числа через пробел C++
Решить не используя операторы цикла. Дано натуральное число N. Выведите все его цифры по одной, в обычном порядке, разделяя их пробелами или новыми строками. Например Ввод Вывод 179 1 7 9
задача на массив (Вычислить А^n) C++
Дан массив размером n*n элементы которого целые числа. Вычислить А^n ? где n - натуральное число. С++
C++ Зачет [реализовать базу данных в виде массива] http://www.cyberforum.ru/cpp-beginners/thread717803.html
Основываясь не этой структуре: struct clientData //клиент { int accNum; //номер счёта char Sur; //фамилия char Name; //Имя float balance; //Баланс (сумма на счету, или долг) };
C++ Поиск наибольшей строки Передо мной стоит задание: использовать шаблонную функцию для нахождения самого большого значения для массивов int и double, и использовать явную специализацию для поиска самой большей строки. Вот... подробнее

Показать сообщение отдельно
mario69
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 26

Массивы (нужен совет) - C++

03.12.2012, 18:54. Просмотров 245. Ответов 4
Метки (Все метки)

вот программа
в подчеркнутой строке выдает ошибку "выражение должно иметь константное значение" (это касается n)
как исправить то?

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
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
    srand(time(NULL)); //делаем rand() зависящим от текущего времени, по сути аналог randomize()
    
    int n, k; //размер массива, сколько затем добавить
    int min, max; //минимальный и максимальные элементы
    int min_pos, max_pos; //их позиции
    cout << "Введите размер массива:" << endl;
    cin >> n; //считываем его
   [U][B] int a[n];[/B][/U] //объявляем массив нужного размера
    
    cout << "Массив имеет вид:" << endl;
    for (int i = 0; i < n; i++) { //заполняем массив случайными числами от 0 до 99 и печатаем
        a[i] = rand() % 100 - rand() % 100;
        cout << a[i] << " ";
    }
    cout << endl;
    cout << "Удаляем из массива элементы с четными индексами:" << endl;
    for (int i = 0; i < n / 2; i++) { //удаление нечетных индексов
        a[i] = a[i * 2 + 1];
        cout << a[i] << " ";
    }
    n /= 2; //уменьшаем n, ведь якобы удалили элементы
    cout << endl;
    
    cout << "Сколько элементов добавить в конец массива:" << endl;
    cin >> k;
    if ((k > n && n) || (k > 1 && !n)) //проверка на переполнение
        cout << "Нельзя добавить так много элементов!" << endl;
    else {
        for (int i = n; i < n+k; i++) { //добавляем еще случайных элементов в конец
            a[i] = rand() % 100 - rand() % 100;
        }
        n += k; //увеличиваем n, ведь якобы добавили элементы
        cout << "Массив теперь имеет вид:" << endl;
        for (int i = 0; i < n; i++) //печатаем наш новый массив
            cout << a[i] << " ";
        cout << endl;
    }
    min = a[0], min_pos = 0;
    max = a[0], max_pos = 0;
    for (int i = 0; i < n; i++) { //ищем минимальный и максимальный элементы
        if (a[i] < min) {
            min = a[i];
            min_pos = i;
        }
        if (a[i] > max) {
            max = a[i];
            max_pos = i;
        }
    }
    cout << "Минимальный элемент текущего массива:" << endl;
    cout << min << endl;
    cout << "Максимальный элемент текущего массива:" << endl;
    cout << max << endl;
    a[min_pos] = max; //меняем местами минимальный и максимальный
    a[max_pos] = min;
    cout << "Массив после перестановки:" << endl;
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
    
    cout << "Первый отрицательный элемент:" << endl;
    int j = 0;
    while (a[j] >= 0 && j < n) j++;
    if (a[j] >= 0) 
        cout << "В массиве нет отрицательных элементов!";
    else {
        cout << a[j] << endl;
        cout << "Количество сравнений для его поиска:" << endl;
        cout << j + 1 << endl;
    }
 
    cout << "Массив, отсортированный включением:" << endl;
    for (int i = 1; i < n; i++) { //сортируем включением
        for (int m = i; m >= 0; m--) {
            if (a[i] < a[m]) {
                a[i] ^= a[m];
                a[m] = a[i] ^ a[m];
                a[i] = a[i] ^ a[m];
                if (i != 0) i--;
            }
        }
    }
    
    for (int i = 0; i < n; i++) {
        cout << a[i] << " ";
    } 
    cout << endl;
    cout << "Первый отрицательный элемент:" << endl;
    if (a[0] >= 0) 
        cout << "В массиве нет отрицательных элементов" << endl;
    else {
        cout << a[0] << endl;
        cout << "Количество сравнений для его поиска:" << endl;
        cout << 1 << endl;
    }
    return 0;
}
 Комментарий модератора 
Напишите номер строки с ошибкой, и не забывайте про теги форматирования кода.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru