Matti Temat założony przez niniejszego użytkownika |
Błąd kompilacji, potrzebna pomoc. » 2011-07-05 12:04:33 Witam, jestem początkującym programistą, chciałem przećwiczyć sobie tablice, pętle i losowanie w jednym zadaniu. Kolega wymyślił mi zadanie o treści:
-Tablica 5 elementowa
-Na poczatku wpisywane sa do niej losowe cyfry ( 0-9 )np [5][8][3][4][1]
-Zrob petle ktora 3 razy "przesunie" te liczby w prawo, czyli po pierwszym razie wyjdzie [1][5][8][3][4] po drugim [4][1][5][8][3] po trzecim [3][4][1][5][8]
Zadanie jest dla mnie trudne, programowanie już ryje mi banie, ale próbowałem, myślałem, znalazłem jakiś pomysł, niestety nie mogę skompilować pogramu żeby zobaczyć, czy będzie mi przesuwać dobrze.
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int losowanie() { int liczba =( rand() % 10 ) + 0; return liczba; } int main() { srand( time( NULL ) ); int pozycja = 0; int tablica[ 5 ]; do { int liczba = losowanie(); tablica[ pozycja ] = liczba; pozycja++; } while( pozycja < 5 ); cout << "Liczby :" << tablica[ 0 ] << ", " << tablica[ 1 ] << ", " << tablica[ 2 ] << ", " << tablica[ 3 ] << ", " << tablica[ 4 ] << endl; int i = 0; do { int temp = tablica[ 4 ]; tablica[ 4 ] = tablica[ 0 ]; int temp1 = tablica[ 3 ]; tablica[ 3 ] = int temp; int temp2 = tablica[ 2 ]; tablica[ 2 ] = int temp1; int temp3 = tablica[ 1 ]; tablica[ 1 ] = tablica[ 2 ]; int temp4 = tablica[ 0 ]; tablica[ 0 ] = tablica[ 1 ]; i++; } while( i < 3 ); cout << "Liczby :" << tablica[ 0 ] << ", " << tablica[ 1 ] << ", " << tablica[ 2 ] << ", " << tablica[ 3 ] << ", " << tablica[ 4 ] << endl; return 0; }
Błąd jest w 28 i 30 wierszu:
In function 'int main()':|
|28|error: expected primary-expression before 'int'|
|28|error: expected ';' before 'int'|
|30|error: expected primary-expression before 'int'|
|30|error: expected ';' before 'int'|
||=== Build finished: 4 errors, 0 warnings ===|
Pewnie mi napiszecie, że w ogóle sam pomysł takiego przesuwania na zmiennych tymczasowych jest bez sensu, spodziewam się tego. :) |
|
pekfos |
» 2011-07-05 12:11:15 tablica[ 2 ] = int temp1; co to ma być? |
|
szyx_yankez |
» 2011-07-05 12:12:07 In function 'int main()':|
|28|error: expected primary-expression before 'int'|
|28|error: expected ';' before 'int'|
|30|error: expected primary-expression before 'int'|
|30|error: expected ';' before 'int'| |
tablica[3] = int temp;
int temp2 = tablica[2];
tablica[2] = int temp1; |
Po co Ci tutaj słówko int przy zmiennych temp , temp1 ?
Pewnie mi napiszecie, że w ogóle sam pomysł takiego przesuwania na zmiennych tymczasowych jest bez sensu |
Pomysł przesuwania ns zmiennych tymczasowych jest bez sensu. :P |
|
Matti Temat założony przez niniejszego użytkownika |
» 2011-07-05 12:15:24 To jest na razie chaos, tam są źle dobrane wartości i w ogóle, chciałem tylko wiedzieć czemu się nie kompiluje i widzę, że wyszedłem na idiotę. ^^ A jaki macie inny pomysł przesuwania?
No właśnie z tymi intami się skompromitowałem. |
|
pekfos |
» 2011-07-05 12:18:40 void swap( int & a, int & b ) { int c = a; a = b; b = c; } |
|
Matti Temat założony przez niniejszego użytkownika |
» 2011-07-05 12:22:52 Za duży poziom, swapa żadnego jeszcze nie ogarnąłem, jestem na poziomie drugiego rozdziału kursu.
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int losowanie() { int liczba =( rand() % 10 ) + 0; return liczba; } int main() { srand( time( NULL ) ); int pozycja = 0; int tablica[ 5 ]; do { int liczba = losowanie(); tablica[ pozycja ] = liczba; pozycja++; } while( pozycja < 5 ); cout << "Liczby :" << tablica[ 0 ] << ", " << tablica[ 1 ] << ", " << tablica[ 2 ] << ", " << tablica[ 3 ] << ", " << tablica[ 4 ] << endl; int i = 0; do { int temp = tablica[ 4 ]; tablica[ 4 ] = tablica[ 0 ]; int temp1 = tablica[ 3 ]; tablica[ 3 ] = temp; int temp2 = tablica[ 2 ]; tablica[ 2 ] = temp1; int temp3 = tablica[ 1 ]; tablica[ 1 ] = temp2; int temp4 = tablica[ 0 ]; tablica[ 0 ] = temp3; i++; } while( i < 1 ); cout << "Liczby :" << tablica[ 0 ] << ", " << tablica[ 1 ] << ", " << tablica[ 2 ] << ", " << tablica[ 3 ] << ", " << tablica[ 4 ] << endl; return 0; }
Poprawiłem, przesuwa mi o jedno w prawo. :) Teraz tylko ogarnąć jak to zrobić jeszcze dwa razy.
e:
Jednak nie przesuwa w prawo, cofa mi w lewo. I jak zmienię warunek w while na i < 3, to przesunie mi 3 razy w lewo. No to teraz muszę zmienić to tak, żeby w prawo przesuwało... |
|
szyx_yankez |
» 2011-07-05 12:37:30 Patrz 0 zmiennych tymczasowych
int Tab[ 5 ] = { 1, 2, 3, 4, 5 }; for( int i = 0; i < 3; i++ ) { Tab[ i ] += Tab[ i + 2 ]; Tab[ i + 2 ] = Tab[ i ] - Tab[ i + 2 ]; Tab[ i ] -= Tab[ i + 2 ]; } Tab[ 3 ] += Tab[ 4 ]; Tab[ 4 ] = Tab[ 3 ] - Tab[ 4 ]; Tab[ 3 ] -= Tab[ 4 ];
for( int i = 0; i < 5; i++ ) printf( "%d,", Tab[ i ] );
|
|
Matti Temat założony przez niniejszego użytkownika |
» 2011-07-05 12:53:51 Dzięki za takie rozwiązanie, jak ogarnę trochę bardziej pętlę for, to na pewno się nim zainteresuję. Póki co wolę wywalczyć swoim pomysłem i chyba mi się udało.
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int losowanie() { int liczba =( rand() % 10 ) + 0; return liczba; } int main() { srand( time( NULL ) ); int pozycja = 0; int tablica[ 5 ]; do { int liczba = losowanie(); tablica[ pozycja ] = liczba; pozycja++; } while( pozycja < 5 ); cout << "Liczby :" << tablica[ 0 ] << ", " << tablica[ 1 ] << ", " << tablica[ 2 ] << ", " << tablica[ 3 ] << ", " << tablica[ 4 ] << endl; int i = 0; do { int temp0 = tablica[ 0 ]; tablica[ 0 ] = tablica[ 4 ]; int temp1 = tablica[ 1 ]; tablica[ 1 ] = temp0; int temp2 = tablica[ 2 ]; tablica[ 2 ] = temp1; int temp3 = tablica[ 3 ]; tablica[ 3 ] = temp2; int temp4 = tablica[ 4 ]; tablica[ 4 ] = temp3; i++; } while( i < 3 ); cout << "Liczby :" << tablica[ 0 ] << ", " << tablica[ 1 ] << ", " << tablica[ 2 ] << ", " << tablica[ 3 ] << ", " << tablica[ 4 ] << endl; return 0; }
Kompiluje się, przesuwa liczby, więc chyba dobrze, prawda? Wiem, trochę amatorsko. :) |
|
« 1 » |