Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Błąd kompilacji, potrzebna pomoc.

Ostatnio zmodyfikowano 2011-07-05 12:53
Autor Wiadomość
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.

C/C++
#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. :)
P-35379
pekfos
» 2011-07-05 12:11:15
tablica[ 2 ] = int temp1;
co to ma być?
P-35381
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
P-35382
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.
P-35383
pekfos
» 2011-07-05 12:18:40
C/C++
void swap( int & a, int & b ) {
    int c = a;
    a = b;
    b = c;
}
P-35385
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.
C/C++
#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...
P-35386
szyx_yankez
» 2011-07-05 12:37:30
Patrz 0 zmiennych tymczasowych
C/C++
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 ] );

P-35387
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.

C/C++
#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. :)
P-35388
« 1 »
  Strona 1 z 1