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

prosty program - zadanie z kursu, ale nie moge sobie poradzic - poczatkujacy

Ostatnio zmodyfikowano 2009-10-09 17:36
Autor Wiadomość
dmx81
Temat założony przez niniejszego użytkownika
prosty program - zadanie z kursu, ale nie moge sobie poradzic - poczatkujacy
» 2009-10-08 22:02:47
Witam.
1. Sprawa dotyczy kursu, zadanie z obliczeniem i zapisaniem wyników do tablicy
Nie rozumiem, dlaczego wyniki zapisane do tablicy różnią się od tych zapisanych w poszczególnych zmiennych. Próbowałem również wyświetlić każdy element tabeli osobno - wyświetlane są jeszcze inne wyniki.

2. Mam pytanie odnośnie tabeli z drużynami piłkarskimi. Bez problemu poradzić sobie mogę z wpisaniem wyniku dla spotkania, określeniem na tej podstawie liczby pkt, zapisaniem ich oraz ilości bramek w tabeli. Moje pytanie - jak można poradzić sobie z sortowaniem w tabeli - aby na pierwszym miejscu była drużyna z największa ilością pkt, ponieważ w zadaniu przypisanie każdej wartości jest ręczne, a ja chciałem troszkę rozszerzyć możliwości tabeli, poprzez wpisywanie wyników spotkań, oraz aby tabela automatycznie się aktualizowała - zmieniając pozycje drużyn w tabeli na podstawie wyników?  Rozumiem, ze aby miało to sens, należy również wprowadzić zapisywanie tych wyników do pliku, aby każdorazowo uruchamiając program, nie wpisywać od nowa, ale do tej lekcji jeszcze nie doszedłem, proszę tylko o podpowiedz, jak sortować tabele, aby przypisanie w komórkach tabeli odbyło się w zależności od określonej wartości - w tym przypadku liczba zdobytych pkt. Dziękuje.



kod do pyt. 1
C/C++
#include <iostream>
#include <conio.h>

int main()
{
    using namespace std;
    int a, b, c, d;
    int wyniki[ 4 ] = { a, b, c, d }; // probowalem rowniez int wyniki[4] = {'a','b','c','d'};  co dalo jeszcze inne wyniki//
    a = 2 + 7 * 16 - 8;
    b = 22 * 2 / 11;
    c = 8383 - 222 + 292 * 8;
    d = 5 * 2 * 4;
   
    cout << " wyniki dzialan : " << a << "," << b << "," << c << "," << d << endl;
    cout << " wyniki dzialan : " << wyniki << endl;
    getch();
}



kod do pyt.2
C/C++
#include <iostream>
#include <conio.h>

main()
{
    using namespace std;
    char kraj1[] = "POLSKA";
    char kraj2[] = "NIEMCY";
    int wynik1, wynik2;
    cout << "podaj wyniki..." << endl;
    getch();
    cout << kraj1 << " ";
    cin >> wynik1;
   
    cout << ": " << endl;
    getch();
    cout << kraj2 << " ";
    cin >> wynik2;
    getch();
   
    if( wynik1 == wynik2 )
    {
        cout << " obie druzyny zdobyly 1 pkt";
    }
    else
    {
        if( wynik1 > wynik2 )
        {
            cout << "druzyna " << kraj1 << " zdobyla 3 punkty, druzyna " << kraj2 << " nie zdobyl punktow ";
        }
        else
             cout << "druzyna " << kraj2 << " zdobyla 3 punkty, druzyna " << kraj1 << " nie zdobyl punktow ";
       
    }
    getch();
}
P-10718
DejaVu
» 2009-10-08 22:05:18
Ad 1. Nie zapisujesz niczego do tablicy więc wyniki są różne.

/edit:
Ad 2. Nie masz tablicy danych do posortowania w podanym programie. Jedyne co u siebie masz to de'facto 4 zmienne. Dwie z nazwami drużyn i dwie z wynikami. Jeśli wynik1>wynik2, zamień miejscami wynik1 i wynik2 oraz wskaźniki tab1 z tab2.
P-10719
dmx81
Temat założony przez niniejszego użytkownika
» 2009-10-08 23:15:06
zad1.
deklaruję w zadaniu, ze komórkami tabeli beda wartosci a,b,c,d - pózniej podaję, jakie mają one wartosci - czy to nei wystarczy?

zad2.zgadza się, nie wprowadziłem z zad.2 tabeli jeszcze - to tylko przykladowy kod, dla 2 druzyn, dopisane bedzie pobieranie ilosci bramek do zmiennej, podobnie  zpunktami , chciałem tylko znać odpowiedź, w jaki sposób sortować tabelę - bo docelowo będzie np 6 drużyn i nie będę mógł zamieniać miejscami drużyn w zaproponowany sposob, będą jedynie przypisane do drużyn wartości jak ilość zdobytych bramek, ilość punktów - czy da się to za pomocą jakiejś funkcji sortować, dzięki za pomoc i proszę o cierpliwość, jeśli moje pytania są męczące, ale jestem dociekliwy :)
P-10720
DejaVu
» 2009-10-08 23:34:33
Ad1. Wartości zapisujesz do różnych zmiennych. Ty zakładasz, że:
C/C++
int a = 0;
int b = a;
b = 10;
cout << "a = " << a << endl;
cout << "b = " << b << endl;

a = b;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
Myślę, że powinno Ciebie to naprowadzić na rozwiązanie.

/edit:
Ad2. Wpisz w googlach: Sortowanie bąbelkowe. Jest ono najprostsze i do nauki programowania się jak najbardziej nadaje. Są dużo szybsze algorytmy sortowania i nawet nie trzeba ich implementować własnoręcznie (qsort), ale jak się uczysz to nie ma sensu z nich korzystać.
P-10721
szkuner
» 2009-10-08 23:38:57
Poczytaj sobie jak przypisać do tablicy wyniki tych wyrażeń
i zrozum ze tablica to jest jak dzownica podzielona na segmenty i do kazdego segmentu wkladasz odpowiednią liczbe wiec ty musisz się odwołać do każdego jej elementu np int tab[0]= 12+134;tab[1]=12+45;
Ale nie podałem ci do końca co masz zrobić musisz sam sie kapnąć bo sie nie nauczysz przeczytaj jeszcze raz powoli kurs z rodziału 6 a na pewno dasz rade
P-10722
dmx81
Temat założony przez niniejszego użytkownika
» 2009-10-09 15:22:19
C/C++
#include <iostream>
#include <conio.h>

int main()
{
    using namespace std;
    int a, b, c, d;
    a = 2 + 7 * 16 - 8;
    b = 22 * 2 / 11;
    c = 8383 - 222 + 292 * 8;
    d = 5 * 2 * 4;
    int wyniki[ 4 ];
    wyniki[ 0 ] = a;
    wyniki[ 1 ] = b;
    wyniki[ 2 ] = c;
    wyniki[ 3 ] = d; // int wyniki[4]={a,b,c,d}; rowniez przy takim zapisie danych, czyli krotszym :)//
   
   
    cout << " wyniki dzialan : " << a << "," << b << "," << c << "," << d << endl;
    cout << " wyniki dzialan : " << wyniki[ 0 ] << "," << wyniki[ 1 ] << "," << wyniki[ 2 ] << "," << wyniki[ 3 ] << endl;
    getch();
}


działa :)
dzięki bardzo za pomoc Waszą, nie raz pewnie będę o nią jeszcze prosił - a odpowiedzi właśnie takiej oczekiwałem - nie gotowe rozwiązanie, ale podpowiedź :)


ps do pyt2.
wlasnie czytam o sortowaniu babelkowym - w glowie wlasnie o czyms takim myslalem, ze w najgorszym wypadku mozna na piechote porownywac element z kazdym innym i przesuwac w gore lub dol tabeli - byloby to bardzo czasochlonne - ale widze, ze istnieje na takiej podstawie napisany algorytm, dzieki za podpowiedz, tak bym nie wiedzial ze cos takiego istnieje :)
P-10728
DejaVu
» 2009-10-09 16:45:41
Zuo... idź sprawdzić czy Ciebie w piaskownicy nie ma. Ostatnio tylko spamujesz.
P-10729
dmx81
Temat założony przez niniejszego użytkownika
» 2009-10-11 02:35:57
Udało się :) Nie było łatwo, kilka razy przerabiany cały kod, później poszczególne pętle, ale działa w końcu tak, jak to sobie zaplanowałem.
Na pewno nie jest to coś wielkiego, ale mnie cieszy, ze udało się coś osiągnąć :)
Jeśli można prosić o sugestie, co poprawić, być może coś robię nie tak, jak powinno się robić, będę wdzięczny.
C/C++
#include <iostream>
#include <string>
#include <conio.h>

struct tabela
{
    std::string kraj;
    short bramki;
    short punkty;
   
};

int main()
{
    using namespace std;
    const ldr = 4;
    tabela panstwa[ ldr ];
    int wyniki[ ldr ];
    int i;
   
   
    cout << " Mistrzostwa Swiata w Pilce Noznej 2012. Wprowadz nazwy 4 druzyn grupy 2:\n\n";
   
    for( i = 0; i < ldr; i++ )
    { wyniki[ i ] = 0;
        panstwa[ i ].bramki = 0;
        panstwa[ i ].punkty = 0;
        cout << " \n Wprowadz nazwe kraju nr " << i + 1 << " \n\n";
        cin >> panstwa[ i ].kraj;
    }
    cout << " __________\n";
    for( i = 1; i < ldr; i++ )
    {
        cout << " \nPodaj wyniki " << i << " kolejki grupy 2 \n ======== \n";
       
        for( int i = 0; i < ldr - 1; i += 2 )
        {
            cout << "\n wyniki : \n -=-=- \n" << panstwa[ i ].kraj << endl;
            cin >> wyniki[ i ];
            cout << "  : \n" << panstwa[ i + 1 ].kraj << endl;
            cin >> wyniki[ i + 1 ];
            panstwa[ i ].bramki += wyniki[ i ];
            panstwa[ i + 1 ].bramki += wyniki[ i + 1 ];
           
            if( wyniki[ i ] > wyniki[ i + 1 ] )
            {
                panstwa[ i ].punkty += 3;
                panstwa[ i + 1 ].punkty += 0;
               
            }
            if( wyniki[ i ] == wyniki[ i + 1 ] )
            {
                panstwa[ i ].punkty += 1;
                panstwa[ i + 1 ].punkty += 1;
            }
            if( wyniki[ i ] < wyniki[ i + 1 ] )
            {
                panstwa[ i ].punkty += 0;
                panstwa[ i + 1 ].punkty += 3;
            }
           
           
        }
    }
   
   
   
   
    for( int q = 0; q < ldr - 1; q++ )
    {
        for( int r = 0; r < ldr - 1; r++ )
        {
            if( panstwa[ r ].punkty < panstwa[ r + 1 ].punkty )
            {
                swap( panstwa[ r ], panstwa[ r + 1 ] );
            }
            else
            {
                if( panstwa[ r ].punkty == panstwa[ r + 1 ].punkty )
                {
                    for( int q = 0; q < ldr - 1; q++ )
                    {
                        for( int r = 0; r < ldr - 1; r++ )
                        {
                            if( panstwa[ r ].bramki < panstwa[ r + 1 ].bramki )
                            {
                                swap( panstwa[ r ], panstwa[ r + 1 ] );
                            }
                        }
                    }
                }
            }
        }
    }
    cout << " Podsumowanie Grupy 2: \n=======\n ";
    for( int i = 0; i < ldr; i++ )
    {
        cout << "\n pozycja" << i + 1 << "  kraj:  " << panstwa[ i ].kraj << " bramki:  " << panstwa[ i ].bramki
        << "  punkty:  " << panstwa[ i ].punkty << endl;
       
    }
    getch();
}
A tu już troszkę po północy udoskonalony kod - wymyśliłem sposób, aby mecze rozgrywane były za każdym razem z innym przeciwnikiem :)
C/C++
#include <iostream>
#include <string>
#include <conio.h>

struct tabela
{
    std::string kraj;
    short bramki;
    short punkty;
   
};

int main()
{
    using namespace std;
    const ldr = 4;
    tabela panstwa[ ldr ];
    int wyniki[ ldr ];
    int i;
   
   
    cout << " Mistrzostwa Swiata w Pilce Noznej 2012. Wprowadz nazwy 4 druzyn grupy 2:\n\n";
   
    for( i = 0; i < ldr; i++ )
    { wyniki[ i ] = 0;
        panstwa[ i ].bramki = 0;
        panstwa[ i ].punkty = 0;
        cout << " \n Wprowadz nazwe kraju nr " << i + 1 << " \n\n";
        cin >> panstwa[ i ].kraj;
    }
    cout << " __________\n";
    for( int j = 1; j < ldr; j++ )
    {
        cout << " \nPodaj wyniki " << j << " kolejki grupy 2 \n ======== \n";
        if( j == 2 )
        {
            swap( panstwa[ j - 1 ], panstwa[ j ] );
        }
        if( j == 3 )
        {
            swap( panstwa[ j - 2 ], panstwa[ j ] );
        }
        for( int i = 0; i < ldr - 1; i += 2 )
        {
           
            cout << "\n wyniki : \n -=-=- \n" << panstwa[ i ].kraj << endl;
            cin >> wyniki[ i ];
            cout << "  : \n" << panstwa[ i + 1 ].kraj << endl;
            cin >> wyniki[ i + 1 ];
            panstwa[ i ].bramki += wyniki[ i ];
            panstwa[ i + 1 ].bramki += wyniki[ i + 1 ];
           
            if( wyniki[ i ] > wyniki[ i + 1 ] )
            {
                panstwa[ i ].punkty += 3;
                panstwa[ i + 1 ].punkty += 0;
               
            }
            if( wyniki[ i ] == wyniki[ i + 1 ] )
            {
                panstwa[ i ].punkty += 1;
                panstwa[ i + 1 ].punkty += 1;
            }
            if( wyniki[ i ] < wyniki[ i + 1 ] )
            {
                panstwa[ i ].punkty += 0;
                panstwa[ i + 1 ].punkty += 3;
            }
           
           
        }
    }
   
   
   
   
    for( int q = 0; q < ldr - 1; q++ )
    {
        for( int r = 0; r < ldr - 1; r++ )
        {
            if( panstwa[ r ].punkty < panstwa[ r + 1 ].punkty )
            {
                swap( panstwa[ r ], panstwa[ r + 1 ] );
            }
            else
            {
                if( panstwa[ r ].punkty == panstwa[ r + 1 ].punkty )
                {
                    for( int q = 0; q < ldr - 1; q++ )
                    {
                        for( int r = 0; r < ldr - 1; r++ )
                        {
                            if( panstwa[ r ].bramki < panstwa[ r + 1 ].bramki )
                            {
                                swap( panstwa[ r ], panstwa[ r + 1 ] );
                            }
                        }
                    }
                }
            }
        }
    }
    cout << " Podsumowanie Grupy 2: \n=======\n ";
    for( int i = 0; i < ldr; i++ )
    {
        cout << "\n pozycja" << i + 1 << " kraj: " << panstwa[ i ].kraj << " ##" << " bramki: " << panstwa[ i ].bramki << " ##"
        << " punkty:  " << panstwa[ i ].punkty << endl;
       
    }
    getch();
}

/Pietrzuch:
Jak chcesz to możesz sobie przekopiować post(z programem oczywiście) do nowego tematu w dziale 'Nasze Prace', myślę że tam będzie lepsze miejsce na jakieś sugestie i oceny. :)
P-10799
« 1 » 2
  Strona 1 z 2 Następna strona