Witam, w ponizszym zadaniu chodzi o zamiane ze sobą dwoch wierszy w tablicy z uzyciem funkcji. Ponizej przedstawiam dwa kody gdzie w jednym z nich jest uzyta tablica dynamiczna. W jednym i drugim przypadku kod generuje sie i dziala zatem jaka jest roznica miedzy oboma kodami?
kod 1 z uzyciem tablicy dynaicznej
#include <iostream>
using namespace std;
void test( int*a,int*b ){
int tmp=*b;
*b=*a;
*a=tmp;
}
int main(){
int wys,szer,i,j;
int **tab;
cout<<"podaj liczbe wierszy: ";
cin>>wys;
cout<<"podaj liczbe kolumn: ";
cin>>szer;
tab=new int*[wys];
//tworzenie tablicy
for(i=0;i<wys;i++)
tab[i]=new int[szer];
/// wypelnienie i odczyt tablicy
for(i=0;i<wys;i++)
for(j=0;j<szer;j++)
tab[i][j]=i;
for(i=0;i<wys;i++){
for(j=0;j<szer;j++)
cout<<tab[i][j];
cout<<endl;
}
cout<<endl;
// wybor wierszy do zmiany
int k,l;
bool zmiana=false;
do{
cout<<"podaj nr wiersza ktory chesz zamienic ";
cin>>k;
if(k<=wys){
do{
cout<<"podaj nr drugiego wiersza ktory chesz zamienic ";
cin>>l;
if(l<=wys)
zmiana=true;
}while(zmiana==false);
}
} while(zmiana==false);
k--;
l--;
//zmiana wierszy
for(j=0;j<szer;j++)
test(&tab[k][j],&tab[l][j]);
//odczyt tablicy
cout<<endl;
for(i=0;i<wys;i++){
for(j=0;j<szer;j++){
cout<<tab[i][j];
}
cout<<endl;
}
return 0;
}
kod 2:
#include <iostream>
using namespace std;
void test( int*a,int*b ){
int tmp=*b;
*b=*a;
*a=tmp;
}
int main(){
int wys,szer,i,j;
cout<<"podaj liczbe wierszy: ";
cin>>wys;
cout<<"podaj liczbe kolumn: ";
cin>>szer;
int tab[wys][szer];
/// wypelnienie i odczyt tablicy
for(i=0;i<wys;i++)
for(j=0;j<szer;j++)
tab[i][j]=i;
for(i=0;i<wys;i++){
for(j=0;j<szer;j++)
cout<<tab[i][j];
cout<<endl;
}
cout<<endl;
// wybor wierszy do zmiany
int k,l;
bool zmiana=false;
do{
cout<<"podaj nr wiersza ktory chesz zamienic ";
cin>>k;
if(k<=wys){
do{
cout<<"podaj nr drugiego wiersza ktory chesz zamienic ";
cin>>l;
if(l<=wys)
zmiana=true;
}while(zmiana==false);
}
} while(zmiana==false);
k--;
l--;
//zmiana wierszy
for(j=0;j<szer;j++)
test(&tab[k][j],&tab[l][j]);
//odczyt tablicy
cout<<endl;
for(i=0;i<wys;i++){
for(j=0;j<szer;j++){
cout<<tab[i][j];
}
cout<<endl;
}
return 0;
}