Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

С++ Проблема в коде(массивы, циклы)

Илья Тентил Ученик (95), открыт 2 недели назад
Доброго времени суток, хочу вывести числа в диапазоне от 100 до 200 включительно чётные в один одномерный массив и нечётные в другой одномерный массив, столкнулся с проблемой: цикл с перебором от 100 до 200 полностью проходит и последнее его значение(199(при условии нечётности) и 200(при условии чётности)) записывается во все ячейки должного массива. Причём код без массива с обычным выводом в цикле работает так, как задумано. В чём может быть проблема? (ниже указал скрины и коды)

Не работающий должным образом код с массивами:

#include<iostream>
using namespace std;
int main() {
int arrch[52];
int arrnch[52];
for (int x=100; x<201; x++) {
if(x%2 == 1) {
for(int i=0; i<52; i++) {
arrnch[i] = x;
}
}
else {
for (int j=0; j<52; j++) {
arrch[j] = x;
}
}
}
cout<<"Чётные числа в диапазоне от 100 до 200 вкл - ";

for (int j=0; j<52; j++) {
cout<<arrch[j]<<" ";
}

cout<<"\nНечётные числа в диапазоне от 100 до 200 вкл - ";

for (int i=0; i<52; i++) {
cout<<arrnch[i]<<" ";
}

return 0;
}

Работающий должным образом код без массивов:

#include<iostream>
using namespace std;
int main() {
cout<<"Нечётные числа в диапазоне от 100 до 200 включительно - ";
for (int x=100; x<201; x++) {
if(x%2 == 1) {
cout<<x<<" ";
}
}
return 0;
}

3 ответа
Сэр Аналдин Профи (826) 2 недели назад
щас попробую исправить код но тут уже понятно в чем причина подумай сам последняя итерация когда 200 число четное а дальше срабатывает код

for(int i=0; i<52; i++) {
arrnch[i] = x;
то есть ты говоришь 0-52 ячейки будут равняться 200 понял?
Сэр АналдинПрофи (826) 2 недели назад
пробуй



#include<iostream>
using namespace std;
int main() {
int c = 0;
int cn = 0;
int arrch[50];
int arrnch[50];
for (int x=100; x<=200; x++) {
if(x%2 == 1) {
arrnch[cn] = x;
cn+=1;
}

else {
arrch[c] = x;
c+=1;
}

}
cout<<"Чётные числа в диапазоне от 100 до 200 вкл - ";

for (int j=0; j<51; j++) {
cout<<arrch[j]<<" ";
}

cout<<"\nНечётные числа в диапазоне от 100 до 200 вкл - ";

for (int i=0; i<50; i++) {
cout<<arrnch[i]<<" ";
}

return 0;
}
Sergio 2.1 Оракул (67269) 2 недели назад
 #include<iostream> 
using namespace std;
int main() {
int arrch[52]; // массив для четных чисел
int arrnch[52]; // массив для нечетных чисел
int indexCh = 0; // индекс для четных чисел
int indexNch = 0; // индекс для нечетных чисел

// Заполняем массивы
for (int x = 100; x <= 200; x++) {
if (x % 2 == 0) { // если число четное
arrch[indexCh] = x;
indexCh++;
}
else { // если число нечетное
arrnch[indexNch] = x;
indexNch++;
}
}

// Вывод четных чисел
cout << "Чётные числа в диапазоне от 100 до 200 вкл - ";
for (int j = 0; j < indexCh; j++) {
cout << arrch[j] << " ";
}

// Вывод нечетных чисел
cout << "\nНечётные числа в диапазоне от 100 до 200 вкл - ";
for (int i = 0; i < indexNch; i++) {
cout << arrnch[i] << " ";
}

return 0;
}
Николай Веселуха Высший разум (368837) 2 недели назад
 #include <iostream> 
using namespace std;
int main() {
constexpr size_t n = 50;
int even[n]{ 100 };
int odd[n]{ 101 };
for (size_t i = 1; i < n; ++i) {
even[i] += even[i - 1] + 2;
odd[i] += odd[i - 1] + 2;
}
for (auto x : even) cout << x << ' ';
cout.put('\n');
for (auto x : odd) cout << x << ' ';
cout.put('\n');
}
Похожие вопросы