Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Одномерные массивы в с++

80K
04 марта 2012 года
Neon_325
4 / / 04.03.2012
Помогите разобраться в коде, тут при добавлении элементов в конец, добавляются лишние, и не выводится первый отрицательный элемент

Код:
#include <vcl.h>
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

char* Rus(const char* text);

    void main()
    {
    randomize();
    int a[100];
    int n,i,k,min, max;
    cout << Rus(" Введите размер массива n: ") << endl;
    cin >> n;
    for (i=0; i<n; i++) a=random(100);
    cout << a <<" ";
    cout << Rus(" Массив имеет вид: ") << endl;
    for (i = 0; i < n; i++) { //заполняем массив случайными числами от 0 до 99 и печатаем
        a = random(100);
        cout << a << " ";
    }
    cout << Rus(" Удаляем из массива элементы с четными индексами: ") << endl;
    for (i = 0; i < n / 2; i++) { //удаление нечетных индексов
        a = a[i * 2 + 1];
        cout << a << " ";
    }
    n /=2; //уменьшаем n, ведь удалили элементы
   
    cout << Rus("Сколько элементов добавить в конец массива: ") << endl;
    cin >> k;
    if (k > n) //проверка на переполнение
        cout << Rus("Нельзя добавить так много элементов! ") << endl;
    else {
        for (i = n; i < n+k; i++) { //добавляем еще случайных элементов в конец
            a = random(100);
        }
        n += k; //увеличиваем n, ведь добавили элементы
        cout << Rus( "Массив теперь имеет вид:") << endl;
        for ( i = 0; i < n; i++) //печатаем наш новый массив
            cout << a << " ";
    }
    min = a[0];
    max = a[0];
    for (i = 0; i < n; i++) { //ищем минимальный и максимальный элементы
        if (a < min)
            min = a;
        if (a > max)
            max = a;
    }
    cout << "Минимальный элемент текущего массива:" << endl;
    cout << min << endl;
    cout << "Максимальный элемент текущего массива:" << endl;
    cout << max << endl;

    cout << "Первый отрицательный элемент:" << endl;
     for (a[i-1]<=0; i<n; i++ ) a = random(100)- random(100);
     for (i = 0; i < n; i++) cout << a << " ";
    getch();
}

char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text,bufRus);
return bufRus;
}


18K
05 марта 2012 года
s-ilent
58 / / 30.09.2008
Во-первых,

 
Код:
n /=2; //уменьшаем n, ведь удалили элементы

а если n было нечетное, то один элемент вы потеряете.
Например:

 
Код:
int n = 5/2;

Результатом будет n = 2. А по логике, если убрать все четные элементы, то должно n = 3. Надо сделать, например:

 
Код:
n = n/2 + n%2;




 
Код:
cout << "Первый отрицательный элемент:" << endl;
     for (a[i-1]<=0; i<n; i++ ) a = random(100)- random(100);


Что вы хотели здесь сделать. По действию видно, что вы меняете a на разность двух случайных величин. Но при этом какое начальное значение у i? Согласно программе при входе в этот цикл в i будет последнее значение предыдущего цикла.
Поскольку вам нужно первое отрицательное значение (как вы пишите), то нужно что-то вроде:

 
Код:
cout << "Первый отрицательный элемент:" << endl;
     for (i = 0; i<n; i++ ) {
    if(a<0) cout << a; 
    break;
     }

18K
05 марта 2012 года
s-ilent
58 / / 30.09.2008
В ответе везде, где a должен быть индекс i. Не понимаю, почему он не отображается. Хотя в ответе есть.
80K
05 марта 2012 года
Neon_325
4 / / 04.03.2012
А как можно сделать чтобы цикл завершился при поиске первого отрицательного элемента-без break?
394
06 марта 2012 года
MegaMozg
317 / / 18.03.2006
Цитата: Neon_325
А как можно сделать чтобы цикл завершился при поиске первого отрицательного элемента-без break?


return
goto

10K
06 марта 2012 года
Cybernetic
106 / / 22.07.2009
Цитата: Neon_325
А как можно сделать чтобы цикл завершился при поиске первого отрицательного элемента-без break?


Или сделать условный цикл while или do-while

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог