Witam, w moim kodzie chcę wybrać po kolei wierszami nieparzyste wartości z tablicy X[w][k] i wpisać je po kolei wierszami do tablicy Z[w][w]. Problem polega na tym, że w pierwszej kolumnie każdego wiersza większego od 0 pomijana jest wartość która powinna być wczytana i wczytywana jest następna.
tzn. jeśli mamy np. tablicę X[3][6]
1 1 3 4 5 6
2 3 4 5 5 7
3 4 5 6 7 8
to tablica Z wygląda w ten sposób:
1 1 3
3 5 5
3 5 7
gdy powinna być:
1 1 3
5 3 5
5 7 3
kod zachowuje się, jakby w warunku
else if (n<w && m>=w){
m=0;
n++;
Z[n][m]=X[i][j];
}
nie było ostatniej linijki przed klamrą
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main (){
srand (time (0));
int w, k, a, b;
cout << "Wprowadz liczbe wierszy / kolumn: ";
cin >> w >> k;
cout << "Wprowadz zakres od a do b: ";
cin >> a >> b;
int X[w][k];
for (int i = 0; i<w; i++){
for (int j = 0; j<k; j++) {
X[i][j] = a + ((rand()%(b - a + 1)));
}
}
int Z [w][w];
int n = 0;
int m = 0;
//wczytywanie wartosci Z[w][w]; Z[w][w] przechowuje tylko nieparzyste wartosci X[w][k]
for (int i = 0; i<w; i++){
for (int j = 0; j<k; j++) {
if (abs(X[i][j])%2){
if (n<w && m<w){
Z[n][m]=X[i][j];
m++;
} else if (n<w && m>=w){
m=0;
n++;
Z[n][m]=X[i][j];
}
}
}
}
//drukowanie wartosci Z[w][w]
for (int i = 0; i<w; i++){
for (int j = 0; j<w; j++) {
cout << Z[i][j] << " ";
if (j==w-1) {
cout << endl;
}
}
}
return 0;
Problem jest zapewne banalny, ale przeglądałem to z 10 razy i wciąż nie mogę znaleźć błędu, z góry dzięki za odpowiedź.
dodanie znaczników <code class="cpp">
- @furious programming