Witam wszystkich! Ostatnio na informatyce otrzymaliśmy oto takie zadanie. Mam zadeklarować tabelę i podać 3 liczby a-liczbę wierszy tabeli, b-liczbę kolumn tabeli i c-co którą liczbę chcemy wykreślić, a program miał obliczyć ile jest par takich komórek (wykreślonych), które znajdują się w obok siebie. Do kolejnych komórek program wpisywał kolejne liczby naturalne. W moim programie wykreślałem liczby z komórki w taki sposób, że zmieniałem ich wartość na 0. Dla przykładowych danych a=2, b=3 , c=1
1 2 3
4 5 6
0 0 0
0 0 0 Są 3 pary takich liczb. ( Program wypisuje, że 6.):
Dla przykładowych danych a=2, b=3 , c=2:
1 2 3
4 5 6
1 0 3
0 5 0 Jest 0 takich par liczb. ( Program wypisuje, że jest 1.)
Program poprawnie wpisuje i 'wykreśla' liczby z komórek tabeli, jednak źle liczy on liczbę par tych 'wykreślonych' liczb np. dla powyższego przykładu pokazuje, że "Jest 1 para takich liczb", więc problem tkwi w ostatnim-3 'dużym' forze. (Dla danej komórki porównuję tylko wartość z komórki pod nią i na prawo od niej, aby uniknąć powtórek.) Z góry dziękuję za pomoc. Pozdrawiam. :)
#include <iostream>
using namespace std;
int main()
{
cout << "Podaj liczbe wierszy." << endl;
int a;
cin>>a;
cout << "Podaj liczbe kolumn." << endl;
int b;
cin>>b;
cout << "Podaj co ktora liczbe chcesz wykreslic." << endl;
int c;
cin>>c;
int tab[a][b];
int d=1;
int e=0;
for(int i=0; i<a; i++)
{
for(int j=0; j<b; j++)
{
tab[i][j]=d;
cout<<tab[i][j]<<" ";
d++;
}
cout<<" "<<endl;
}
cout<<" "<<endl;
for(int k=0; k<a; k++)
{
for(int l=0; l<b; l++)
{
if(tab[k][l]%c==0)
{
tab[k][l]=0;
cout<<tab[k][l]<<" ";
}
else
{
cout<<tab[k][l]<<" ";
}
}
cout<<" "<<endl;
}
for(int m=0; m<a; m++)
{
for(int n=0; n<b; n++)
{
if(tab[m][n]==tab[m+1][n])
{
e++;
}
else if(tab[m][n]==tab[m][n+1])
{
e++;
}
}
}
cout<<"Jest "<<e<<" par takich skreslonych komorek, ktore znajduja sie obok siebie"<<endl;
return 0;
}