Одномерные массивы в с++
Код:
#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;
}
#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;
}
Код:
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);
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;
}
for (i = 0; i<n; i++ ) {
if(a<0) cout << a;
break;
}
В ответе везде, где a должен быть индекс i. Не понимаю, почему он не отображается. Хотя в ответе есть.
А как можно сделать чтобы цикл завершился при поиске первого отрицательного элемента-без break?
Цитата: Neon_325
А как можно сделать чтобы цикл завершился при поиске первого отрицательного элемента-без break?
returngoto
Цитата: Neon_325
А как можно сделать чтобы цикл завершился при поиске первого отрицательного элемента-без break?
Или сделать условный цикл while или do-while