Napisz program, który wylosuje i wypisze tablicę dwuwymiarową liczb całkowitych, następnie posortuje każdy wiersz tablicy i ponownie wypisze tablicę.

0

Kompletnie nie mam pomysłu na rozwiązanie tego problemu, a projekt muszę wysłać już jutro. W moim programie jest masa błędów. Czy ktoś dałby radę rozwiązać ten problem?

1

Pewnie. Pokaż co już masz.

0

#include<iostream>
using namespace std;
int main()
{
    int arr[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};
    int i, j;
    cout<<"Dwuwymiarowa tablica to:\n";
    for(i=0;  i<4; i++)
    {
        for(j=0; j<2; j++)
            cout<<arr[i][j]<<"  ";
        cout<<endl;
    }
    cout<<endl;
    return 0;
}```
2

No faktycznie jest tu parę błędów.
Pierwszy błąd jaki się rzuca w oczy to że liczby nie są losowane. Drugim błędem może być to że nie są sortowane.
Polecam google.com
https://www.google.com/search?q=c%2B%2B+losowanie+liczb
https://www.google.com/search?q=c%2B%2B+sortowanie+tablicy

1

masz losowanie cyfr 1-9

srand (time(NULL));
int arr[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

    for(int i = 0; i < 4; i++) {
        for(int j=0; j<2; j++)
        arr[i][j] = rand() % 9+1;
    }
0

@gk1982: Zrobilem tak i wywala mi taki błąd:

using namespace std;
int main()
{
    int arr[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};
    int i, j;
    cout<<"Dwuwymiarowa tablica to:\n";
    for(i=0;  i<4; i++)
    {
   srand (time(NULL));
int arr[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

    for(int i = 0; i < 4; i++) {
        for(int j=0; j<2; j++)
        arr[i][j] = rand() % 9+1;
    }

    cout<<endl;
    return 0;
}
0

Ten mój kod wklejasz zamiast tej zakomentowanej linijki:

    srand (time(NULL));
int arr[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

    for(int i = 0; i < 4; i++) {
        for(int j=0; j<2; j++)
        arr[i][j] = rand() % 9+1;
    }
    //int arr[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}}; <--zamiast tego

https://www.onlinegdb.com/FXjhOK5Fd

0

@doggy_: Juz działa, dziękuję. Musiałem jeszcze dodać jakieś bioblioteki. A jeszcze pytanie, co teraz zrobić, żeby po wypisaniu następnie mi posortowało każdy wiersz tablicy i ponownie ją wypisało?

0

Ale chcesz żeby tylko wiersze były posortowane ?

0

@gk1982: Tylko wiersze, bo zadanie brzmi tak: ,,Napisz program, który wylosuje i wypisze tablicę dwuwymiarową liczb całkowitych, następnie posortuje każdy wiersz tablicy i ponownie wypisze tablicę."

0

To masz na tej stronie przykładowy algorytm: https://www.geeksforgeeks.org/row-wise-sorting-2d-array/

Bierze sobie ten kod kopiujesz

// loop for rows of matrix
  for (int i = 0; i < r; i++)
  {
    // loop for column of matrix
    for (int j = 0; j < c; j++)
    {
      // loop for comparison and swapping
      for (int k = 0; k < c - j - 1; k++)
      {
        if (m[i][k] > m[i][k + 1])
        {
          // swapping of elements
          swap(m[i][k], m[i][k + 1]);
        }
      }
    }
  }

zamieniasz r na liczbę ile masz wierszy, czyli 4
zamieniasz c na liczbę ile masz kolumn, czyli 2
m zamieniasz na arr, bo tak jest w Twoim kodzie nazwana tablica

0

@gk1982: A czy dałoby radę jakoś zedytować powyższy kod, bo na tej stronie są rozwiązania, których nie miałem jeszcze w szkole?

0

@gk1982: Nie wiem o co chodzi, ale chyba robię to w złym miejscu(Bo nie działa):

#include<iostream>
#include <cstdlib>
#include <cstdio>
#include <ctime>
using namespace std;
int main()
{
    srand (time(NULL));
int arr[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

    for (int i = 0; i < 4; i++)
        {
        for (int j = 0; j < 2; j++)
        arr[i][j] = rand() % 9+1;
        }
    int i, j;
    cout<<"Dwuwymiarowa tablica to:\n";
    for (int k = 0; k < 2 - j - 1; k++)
    {
        if (m[i][k] > m[i][k + 1])
        {
          swap(m[i][k], m[i][k + 1]);
        }
    {
        for(j=0; j<2; j++)
            cout<<arr[i][j]<<"  ";
        cout<<endl;
    }
    cout<<endl;
    return 0;
}

0

@doggy_: Teraz zrobilem tak i tez nie dziala:

#include<iostream>
#include <cstdlib>
#include <cstdio>
#include <ctime>
using namespace std;
int main()
{
    srand (time(NULL));
int arr[4][2] = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

    for (int i = 0; i < 4; i++)
        {
        for (int k = 0; k < 2 - j - 1; k++)
        {
            if (m[i][k] > m[i][k+1])
        }
        swap(m[i][k],m[i][k+1]);
        arr[i][j] = rand() % 9+1;
        }
    int i, j;
    cout<<"Dwuwymiarowa tablica to:\n";
    for(i=0;  i<4; i++)
    {
        for(j=0; j<2; j++)
            cout<<arr[i][j]<<"  ";
        cout<<endl;
    }
    cout<<endl;
    return 0;
}

0
#include<iostream>
using namespace std;
int
main ()
{
  srand (time (NULL));
  int arr[4][2] = { {1, 2}, {3, 4}, {5, 6}, {7, 8} };

  for (int i = 0; i < 4; i++)
    {
      for (int j = 0; j < 2; j++)
	arr[i][j] = rand () % 9 + 1;
    }

  cout << "Wylosowana dwuwymiarowa tablica to:\n";
  for (int i = 0; i < 4; i++)
    {
      for (int j = 0; j < 2; j++)
	cout << arr[i][j] << "  ";
      cout << endl;
    }
  cout << endl;
  
  // loop for rows of matrix
  for (int i = 0; i < 4; i++)
    {
      // loop for column of matrix
      for (int j = 0; j < 2; j++)
	{
	  // loop for comparison and swapping
	  for (int k = 0; k < 2 - j - 1; k++)
	    {
	      if (arr[i][k] > arr[i][k + 1])
		{
		  // swapping of elements
		  swap (arr[i][k], arr[i][k + 1]);
		}
	    }
	}
    }

  cout << "Dwuwymiarowa tablica po sortowaniu wierszy to:\n";
  for (int i = 0; i < 4; i++)
    {
      for (int j = 0; j < 2; j++)
	cout << arr[i][j] << "  ";
      cout << endl;
    }
  cout << endl;
  return 0;
}

https://onlinegdb.com/0nM04VLAn

0

@gk1982: Już wszystko śmiga. Bardzo dziękuję Ci za pomoc i Twoją cierpliwość, bo jestem mało kumatą osobą <3

3

Jak się pisze w C++ to powinno się korzystać z funkcjonalności C++:

#include <iostream>
#include <vector>
#include <algorithm>

using Matrix = std::vector<std::vector<int>>;

void print(const Matrix& m)
{
    for (const auto &row : m) {
        for (auto x : row) { 
            std::cout << x <<  ' '; 
        } 
        std::cout << '\n';
    }
}

void randomize(Matrix& m)
{
    for (auto &row : m) {
        for (auto& x : row) { 
            x = rand () % 9 + 1;
        } 
    }
}

int main()
{
    constexpr auto size = 10;
    Matrix m(size, std::vector<int>(size));
    randomize(m);
    print(m);
    std::cout << std::string(size * 2 - 1, '-') << '\n';
    std::sort(m.begin(), m.end());
    print(m);
}

https://godbolt.org/z/vz3nbr1vM

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