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

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

Войти
Регистрация
Восстановить пароль
 
mario69
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 26
#1

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

03.12.2012, 18:54. Просмотров 240. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 18:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массивы (нужен совет) (C++):

Нужен совет для решения задачки*(одномерные массивы) - C++
Дана функция y=5sin(2x+1)+cos(x+1) на интервале от x1 до x2 с шагом h. Сформировать другой одномерный массив из элементов первой “впадины”...

Нужен совет - C++
Последний раз прогал очень давно, уже подзабыл, нужен совет. Дан текстовый файл, в котором имеется последовательность чисел (например 2 2...

Нужен совет - C++
Всем добрый день. Кто нибудь может поделиться компилятором Турбо Си++ или каким нибудь другим ...? Или подсказать где можно...

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

Нужен совет! - C++
Народ вот у меня вопрос если я прочитаю книгу &quot;Программирование. Принцыпы и практика использования C++&quot; и кое что не пойму то стоит ли...

Нужен совет! - C++
Здравствуйте уважаемые! Подскажите пожалуйста книгу по С++ , чтобы в ней толком обьяснялось про такие детали, как к примеру _WIN32_WINDOWS...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
03.12.2012, 18:59 #2
Динамически выделять память под массив. То есть
C++
1
2
int* a; 
a = new int[n];

Не по теме:

Когда вставляете код, пользуйтесь тегами.

1
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
03.12.2012, 19:01 #3
1) #include <time.h>
2) память под массив надо выделять динамически. Если не знаешь, что такое динамические массивы, лучше сделай статический. Иначе работать не будет.
1
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
03.12.2012, 19:07 #4
И да Kuzia domovenok прав, надо ещё подключить #include <ctime>
1
mario69
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 26
03.12.2012, 19:17  [ТС] #5
спасибо вам за советы и подсказки)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2012, 19:17
Привет! Вот еще темы с ответами:

Нужен совет - C++
Хочу начать изучать С++. Посоветуйте какие-нибудь книги или самоучители. Учить буду с нуля. До этого немного учил Паскаль, но понял, что...

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

нужен совет!!! - C++
блин скачала еле как этот си...dev c++....ввожу программу и нажимаю компелировать...он компелирует видимо и ничего не выдает...кроме того...

Нужен совет по проге. - C++
Здравствуйте. У меня есть проблема с задачей на C++. Я в нем полный 0 а в институте требуют. Пожалуйста если не трудно помогите с решением....


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

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

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