Zmiana kolumn w macierzy

0

Jestem początkująca w C++.

Czy ktoś mógł mi pomóc z tym zadaniem? I mam problem,żeby zmienić kolumny macierzy.

Mam napisać program realizuje:

  1. wczytać liczbę naturalną n z klawiatury

  2. wygenerować losowo tablicę n liczb rzeczywistych z przedziału [-5,5]

  3. wypisać tabilcę na ekranie

  4. dopisać po każdej wartość ujemnej tabilcy jej wartość bezwględną

  5. wypisać zmienioną tablicę na ekranie

  6. wypisać największą wartość ujemną tablicy i najmniejszą wartość dodatnią

  7. wygenerować losowo macierz An*n liczb całkowitych

  8. wydrukować macierz na ekranie

  9. zmienić 1-szą kolumnę z 3-cią,5-cią,...

  10. wydrukować zmienioną macierz

Czy ktoś mi mógł mi pomóc, żeby mógł kod był poprawny do polecenia?

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>

using namespace std;

int pomiary[5];
float w_bezwzg( float w )
{
    if( w < 0 )
         return - w;
    else
         return w;
}
void szukaj(int tab[], int n, int &MIN, int &MAX)
{
	int i = 2;
	if(n>=2) 
	{
		if(tab[0]>tab[1]) 
		{
			MIN = tab[1];
			MAX = tab[0];
		}
		else
		{
			MIN = tab[0];
			MAX = tab[1];
		}	
		
		while(i+2<=n)
		{
			if(tab[i]>tab[i+1])
			{
				
				if(tab[i]>MAX) 
					MAX = tab[i]; 
				if(tab[i+1]<MIN)
					MIN = tab[i+1];
			}
			else
			{
				
				
				if(tab[i+1]>MAX) 
					MAX = tab[i+1]; 
				if(tab[i]<MIN)
					MIN = tab[i];
			}
			i+=2;
		}
		if(n%2==1)
		{
			if(tab[i] > MAX) MAX = tab[i];
			if(tab[i] < MIN) MIN = tab[i];
		}
	}
	else
	{
		MIN = MAX = tab[0];
	}	
}
int main(){


int n, MIN, MAX;
cout<<"Podaj n"<<endl;
cin>>n;
    srand(time(NULL));

    for (int i=0; i<5; i++)
        {
        pomiary[5] =rand()%-5+5;
        pomiary[5]=rand()%5-5;

        cout <<pomiary[5]<< endl;
        }
int tab[n];
cout << "Wylosowana tablica wynosi: " << endl;
for (int i = 0; i < n; i++)
{
tab[n] = (rand() % (n+1))- n;
cout << "tab[" << i << "]= " << tab[n] << endl;
}
char znak;
cin >> znak;

   
    
   
    for( n = -5; n <= 5; n++ )
    {
        cout << "Wartosc bezwzgledna liczby nr " << n +1<< " to: " << w_bezwzg( pomiary[ n ] ) << endl;
    }

    cout << endl;
    szukaj(tab, n, MIN, MAX);
	
	cout<<"MIN: "<<MIN<<"\nMAX: "<<MAX<<endl;
	
	
	unsigned int A[10][20];

   

    unsigned i,j;

    

    srand(time(NULL));

    

    for(i = 0; i < 10; i++) 
        for(j = 0; j < 20; j++) 
            A[i][j] = rand() % 100;

    

    for(i = 0; i < 10; i++)
    {

        for(j = 0; j < 20; j++) cout << setw(3) << A[i][j];
        cout << endl;
    }
    
    

    cout << endl;

    
    system("PAUSE");
    return 0;
2

** Zmiana kolumn w macierzy**
Pokaże Ci tylko jak zamieniać kolumny w macierzy.
Do swojego kodu będziesz musiała sobie sama zaimplementować.


#include <iostream>
#include <array>

#define n 5

using namespace std;

void print2DMatrix(int m[][n])
{
    for(int i = 0; i < n; ++i)
    {
        for(int j = 0; j < n; ++j)
        {
            cout << m[i][j] << " ";
        }
        cout << "\n";
    }
}
void shift_elements(int m[][n])
{
    for (int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; ++j)
        {
            int t = m[i][j];
            m[i][j] = m[i][n - 1];
            m[i][n - 1] = t;
        }
    }
}

int main()
{
    int m[n][n] = { { 3, 4, 7, 9, 5 },
        { 3, 4, 7, 9, 5 },
        { 3, 4, 7, 9, 5 },
        { 3, 4, 7, 9, 5 },
        { 3, 4, 7, 9, 5 }
    };
    print2DMatrix(m);
    cout << "\n";

    for(int i = 0; i < n; ++i)
    {
        shift_elements(m);
        cout << "\n";
        print2DMatrix(m);
    }
    
    return 0;
}


3

Kilka uwag odnośnie kodu:

Linia : Komentarz
8 : nie używaj zmiennych globalnych
9 : dlaczego nie użyć funkcji std::abs
16 : nie lepiej użyć std::minmax ?
70 : zły zakres pętli
72 : UB i błąd składni
73 : UB
75 : UB
77 : w standardzie C++ nie ma VLA - lepiej zmień na std::vector
89 : UB

Spróbuj podzielić zadanie na części ( z grubsza według punktów ) i zrealizować je przy pomocy funkcji a nie prawie wszystko upychać w main.

1 użytkowników online, w tym zalogowanych: 0, gości: 1