Witam.
Nie będę oryginalny - wziąłem się za naukę C++, jednak już programowałem, więć totalnie zielony nie jetem ;) Chcę zrobić grę sudoku obsługiwaną w terminalu. Program piszę trochę na windowsie a trochę na linuxie:
- na Windows 7 w DevCpp Portable 5.6.0;
- na Ubuntu piszę w VIM-ie a kompiluję przez gcc komendą gcc -Wall -o -program program.cpp (nie wiem czy flagi nie mają znaczenia).
Problem wygląda tak, że na Windowsie program działa dobrze a na Ubuntu już nie. Na początku program generuje tablicę 9x2. Pierwszy wiersz to kolejne liczby od 1 do 9. Drugi rząd jest losowany a później kolumny sortowane rosnąco według dolnego wiersza. Na windowsie działa prawidłowo. Na linuxie w pierwszym rzędzie nie ma cyfry 9 tylko jakaś ogromna liczba (na początku cała tablica jest zerowana). Poza tym przy każdym uruchomieniu programu w konsoli (./program) liczby są te same, na windowsie za każdym razem losuje je na nowo. Zacząłem okrajać program, żeby znaleźć przyczynę, jednak załamałem się, gdy przy kodzie:
int tablica[9];
for (i = 0; i<9; i++) tabica[i] = 0;
for (int i = 0; i<9; i++)
{
tablica[i] = i+1;
printf("%i ");
}
otrzymuję wynik 92 92 92 92 92 92 92 92 92. Czy to może być przyczyna bibliotek? Zainstalowałem na Ubuntu CodeLite. Tutaj program się w ogóle nie włącza :/ Poniżej zamieszczam działającą część kodu:
#include <cstdio>
#include <cstdlib>
#include <ctime>
void segreguj(int tab1[9][2])
{
int tymczasowa1, tymczasowa2, tymczasowa3, tymczasowa4, kontrola;
for (int j = 0; j < 2; j++)
for (int i = 0; i < 9; i++)
tab1[i][j] = 3;
for (int i = 0; i < 9; i++)
{
tab1[i][0] = i+1;
tab1[i][1] = (rand() % 100);
}
do
{
kontrola = 0;
for (int i = 0; i < 9; i++)
{
if (tab1[i][1] > tab1[i+1][1])
{
tymczasowa1 = tab1[i][1];
tymczasowa2 = tab1[i+1][1];
tab1[i][1] = tymczasowa2;
tab1[i+1][1] = tymczasowa1;
tymczasowa1 = tab1[i][0];
tymczasowa2 = tab1[i+1][0];
tab1[i][0] = tymczasowa2;
tab1[i+1][0] = tymczasowa1;
kontrola = 1;
}
}
}
while (kontrola == 1);
}
int main()
{
int i;
int tab1[9][2];
segreguj(tab1);
for (int i = 0; i<9; i++) printf("%i ",tab1[i][0]);
printf("\n");
for (int i = 0; i<9; i++) printf("%i ",tab1[i][1]);
printf("\n");
}