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?
Pewnie. Pokaż co już masz.
#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;
}```
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
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;
}
@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;
}
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
@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?
Ale chcesz żeby tylko wiersze były posortowane ?
@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ę."
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
@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?
@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;
}
@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;
}
#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;
}
@gk1982: Już wszystko śmiga. Bardzo dziękuję Ci za pomoc i Twoją cierpliwość, bo jestem mało kumatą osobą <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);
}