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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В массиве найти самую маленькую серию подряд стоящих нечетных элементов... (Как доработать программу?) http://www.cyberforum.ru/cpp-beginners/thread717839.html
Помогите доработать программу В заданном массиве целых чисел найти самую маленькую серию подряд стоящих нечетных элементов. Удалить из массива два первых простых числа. Проверить, изменилась ли серия подряд стоящих нечетных элементов. (Функцией описать нахождение самой маленькой, подряд стоящей, нечётной серии элементов.) #include <iostream> #include <conio.h>
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, и использовать явную специализацию для поиска самой большей строки. Вот код: #include <iostream> using namespace std; template <class T> void maxn(T mass, int n); template <> void maxn(char * name,int t); int main() { char * words; words="Boogy"; подробнее

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

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

03.12.2012, 18:54. Просмотров 227. Ответов 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;
}
 Комментарий модератора 
Напишите номер строки с ошибкой, и не забывайте про теги форматирования кода.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru