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

[Kurs XII - Ćw.] Problem z rozwiązaniem

Ostatnio zmodyfikowano 2009-09-05 10:32
Autor Wiadomość
lackiluck1
Temat założony przez niniejszego użytkownika
[Kurs XII - Ćw.] Problem z rozwiązaniem
» 2009-09-03 19:20:33
C/C++
#include <iostream>
#include <conio.h>
#include <ctime>
#include "console.ddt"

using namespace std;
using namespace ddt::console;

int main()
{
    int wybor;
    float pauza;
    char dane[ 5 ][ 5 ][ 58 ] =
    {
        { { "1. Czytaj logi" },
            { "2. Usun temat" },
            { "3. Lista oczekujacych prac" },
            { "4. Pauza" },
            { "5. Koniec" } },
        { { "Co wybierasz szefie? " },
            { "16 styczen 2008 00:01 - atak SYN flooding IP 99.99.99.1" },
            { "20 maj 2008 14:13 - uzytkownik Macius12 blad logowania" },
            { "31 lipiec 2008 17:29 - zarejestrowal sie uzytkownik Mapet" },
            { "5 sierpien 2008 20:09 - aktualizacja Kursu Allegro" } },
        { { "Tematy przeznaczone do usuniecia" },
            { "1. GroupId = 191" },
            { "2. GroupId = 163" },
            { "GroupId = 671" },
            { "1. Dokumetacja." } },
        { { "2. Artykuly." },
            { "3. Dzial Pliki." },
            { "4. Sygnatury zamkniecia by Dante." },
            { "Szefie zrob sobie przerwe, ile potrzebujesz minut?" },
            { "Twoja przerwa wyniesie(w sekundach): " } },
        { { "Niestety przerwa juz minela czas to roboty." },
            { "Podaj cyfry z zakresu 1-5: " },
            { "Koniec na dzisiaj do jutra!" },
            { "Aplikacja zakonczy dzialanie za (sek.)" },
            { "Administrowanie forum DDT:" } }
    };
    gotoxy( 20, 1 ); cout << dane[ 4 ][ 4 ];
    textcolor( 12 );
    gotoxy( 15, 2 ); cout << dane[ 0 ][ 0 ];
    gotoxy( 15, 3 ); cout << dane[ 0 ][ 1 ];
    gotoxy( 40, 2 ); cout << dane[ 0 ][ 2 ];
    gotoxy( 40, 3 ); cout << dane[ 0 ][ 3 ];
    gotoxy( 40, 4 ); cout << dane[ 0 ][ 4 ];
    gotoxy( 1, 5 );
    while( wybor != 6 )
    {
        cout << dane[ 1 ][ 0 ];
        cin >> wybor;
       
        switch( wybor )
        {
        case 1: cout << dane[ 1 ][ 1 ] << endl << dane[ 1 ][ 2 ] << endl << dane[ 1 ][ 3 ]
            << endl << dane[ 1 ][ 4 ] << endl << endl;
            break;
        case 2: cout << dane[ 2 ][ 0 ] << endl;
            cout << dane[ 2 ][ 1 ] << "\t" << dane[ 2 ][ 2 ] << "\t" << dane[ 2 ][ 3 ]
            << endl << endl;
            break;
        case 3: cout << dane[ 2 ][ 4 ] << "\t\t" << dane[ 3 ][ 0 ] << endl << dane[ 3 ][ 1 ]
            << "\t\t" << dane[ 3 ][ 2 ] << endl << endl;
            break;
        case 4: cout << dane[ 3 ][ 3 ] << endl;
            ( cin >> pauza ).get();
           
            clock_t koniec = int( pauza * 60 ) * CLOCKS_PER_SEC;
            clock_t start = clock();
            cout << dane[ 3 ][ 4 ] << pauza * 60 << endl;
            while( clock() - start < koniec )
                ;
           
            cout << dane[ 4 ][ 0 ] << endl << endl;
            break;
            /*   case 5: cout<<dane[4][2];
                                     clock_t koniec2 = 1 * CLOCKS_PER_SEC;
                                     clock_t start1 = clock();
                                     for(int i=5;i>0;i--)
                                        {
                                        cout<<dane[4][3]<<i<<endl;
                                        while(clock()-start1 < koniec2)
                                        ;
                                        }                               */
           
        }
       
    }
    getch();
    return( 0 );
}

W tym kodzie mam problem z opcją 5-koniec.
Na pierwszy rzut oka wydaje mi się, że wszystko jest dobrze i tak jest dopóki nie usunę znaków /* i */
Kompilując w DevC++ wyskakuje mi następujący błąd:
 jump to case label - linijka 74
 crosses initialization of `clock_t start' - linijka 68
 crosses initialization of `clock_t koniec' - linijka 67
Może jestem debilem ale potrzebuje pomocy. Przez dłuższy czas mogę nie odpisywać, bo niestety nie mam neta w domu(ale już nie długo), za co serdecznie przepraszam.
P-10043
GoldWolf
» 2009-09-03 20:20:43
Sprawdziłem i wszystko działa super, bardzo dobrze poradziłeś sobie z zadaniem. Wprawdzie jeszcze trochę poprawek i będzie całkowicie działać zgodnie z wymaganiami ćwiczenia. Więc mogę ci spokojnie powiedzieć, że debilem nie jesteś.

Nie mam takich komunikatów jakie podałeś:
C/C++
#include <iostream>
#include <conio.h>
#include <ctime>
#include "console.ddt"
int main()
{
    using namespace std;
    using namespace ddt::console;
   
    int wybor;
    float pauza;
    char dane[ 5 ][ 5 ][ 58 ] =
    {
        { { "1. Czytaj logi" },
            { "2. Usun temat" },
            { "3. Lista oczekujacych prac" },
            { "4. Pauza" },
            { "5. Koniec" } },
        { { "Co wybierasz szefie? " },
            { "16 styczen 2008 00:01 - atak SYN flooding IP 99.99.99.1" },
            { "20 maj 2008 14:13 - uzytkownik Macius12 blad logowania" },
            { "31 lipiec 2008 17:29 - zarejestrowal sie uzytkownik Mapet" },
            { "5 sierpien 2008 20:09 - aktualizacja Kursu Allegro" } },
        { { "Tematy przeznaczone do usuniecia" },
            { "1. GroupId = 191" },
            { "2. GroupId = 163" },
            { "GroupId = 671" },
            { "1. Dokumetacja." } },
        { { "2. Artykuly." },
            { "3. Dzial Pliki." },
            { "4. Sygnatury zamkniecia by Dante." },
            { "Szefie zrob sobie przerwe, ile potrzebujesz minut?" },
            { "Twoja przerwa wyniesie(w sekundach): " } },
        { { "Niestety przerwa juz minela czas to roboty." },
            { "Podaj cyfry z zakresu 1-5: " },
            { "Koniec na dzisiaj do jutra!" },
            { "Aplikacja zakonczy dzialanie za (sek.)" },
            { "Administrowanie forum DDT:" } }
    };
    gotoxy( 20, 1 ); cout << dane[ 4 ][ 4 ];
    textcolor( 12 );
    gotoxy( 15, 2 ); cout << dane[ 0 ][ 0 ];
    gotoxy( 15, 3 ); cout << dane[ 0 ][ 1 ];
    gotoxy( 40, 2 ); cout << dane[ 0 ][ 2 ];
    gotoxy( 40, 3 ); cout << dane[ 0 ][ 3 ];
    gotoxy( 40, 4 ); cout << dane[ 0 ][ 4 ];
    gotoxy( 1, 5 );
    while( wybor != 6 )
    {
        cout << dane[ 1 ][ 0 ];
        cin >> wybor;
       
        switch( wybor )
        {
        case 1: cout << dane[ 1 ][ 1 ] << endl << dane[ 1 ][ 2 ] << endl << dane[ 1 ][ 3 ]
            << endl << dane[ 1 ][ 4 ] << endl << endl;
            break;
        case 2: cout << dane[ 2 ][ 0 ] << endl;
            cout << dane[ 2 ][ 1 ] << "\t" << dane[ 2 ][ 2 ] << "\t" << dane[ 2 ][ 3 ]
            << endl << endl;
            break;
        case 3: cout << dane[ 2 ][ 4 ] << "\t\t" << dane[ 3 ][ 0 ] << endl << dane[ 3 ][ 1 ]
            << "\t\t" << dane[ 3 ][ 2 ] << endl << endl;
            break;
        case 4: cout << dane[ 3 ][ 3 ] << endl;
            ( cin >> pauza ).get();
            clock_t koniec = int( pauza * 60 ) * CLOCKS_PER_SEC;
            clock_t start = clock();
            cout << dane[ 3 ][ 4 ] << pauza * 60 << endl;
            while( clock() - start < koniec );
           
            cout << dane[ 4 ][ 0 ] << endl << endl;
            break;
        case 5: {
                cout << dane[ 4 ][ 2 ];
                clock_t koniec2 = 1 * CLOCKS_PER_SEC;
                clock_t start1 = clock();
                for( int i = 5; i > 0; i-- )
                {
                    cout << dane[ 4 ][ 3 ] << i << endl;
                    while( clock() - start1 < koniec2 );
                   
                }
               
            } break;
        }
    }
    getch();
    return( 0 );
}

PS sprawdzałem na Code::Blocks, jeśli są chętni to przydał by się ktoś kto sprawdzi to w Dev-ie
P-10047
malan
» 2009-09-03 20:42:57
Na Dev-ie to samo co kolega.

//edit:

lackiluck1 spróbuj tak:
C/C++
clock_t koniec;
koniec = int( pauza * 60 ) * CLOCKS_PER_SEC;
clock_t start;
start = clock();
+ wydaje mi się, że jest błąd w głównej pętli ;p, a dokładnie w warunku.
P-10049
GoldWolf
» 2009-09-03 22:50:37
+ wydaje mi się, że jest błąd w głównej pętli język, a dokładnie w warunku.
To by nie działało nikomu, więc zostaje kompilator...
P-10057
malan
» 2009-09-03 23:07:01
Mi po tej zamianie (up) program się skompilował poprawnie na Dev-ie - wszystko działa.

Co do błędu to miałem na myśli:
while( wybor != 6 )
Zamiast 6 powinna być 5, aby program się zamknął ;p.
P-10058
GoldWolf
» 2009-09-04 03:28:00
Mi po tej zamianie (up) program się skompilował poprawnie na Dev-ie - wszystko działa.I tak wolałbym wiedzieć co było(jest) przyczyną.
P-10059
pompom
» 2009-09-04 14:42:49
Deklaracja zmiennych w case 4 była w głównym bloku switcha.
C/C++
#include <iostream>
#include <conio.h>
#include <ctime>
#include "console.ddt"

int main() {
    using namespace std;
    using namespace ddt::console;
   
    int wybor;
    float pauza;
    char dane[ 5 ][ 5 ][ 58 ] =
    { { { "1. Czytaj logi" },
            { "2. Usun temat" },
            { "3. Lista oczekujacych prac" },
            { "4. Pauza" },
            { "5. Koniec" } },
        { { "Co wybierasz szefie? " },
            { "16 styczen 2008 00:01 - atak SYN flooding IP 99.99.99.1" },
            { "20 maj 2008 14:13 - uzytkownik Macius12 blad logowania" },
            { "31 lipiec 2008 17:29 - zarejestrowal sie uzytkownik Mapet" },
            { "5 sierpien 2008 20:09 - aktualizacja Kursu Allegro" } },
        { { "Tematy przeznaczone do usuniecia" },
            { "1. GroupId = 191" },
            { "2. GroupId = 163" },
            { "GroupId = 671" },
            { "1. Dokumetacja." } },
        { { "2. Artykuly." },
            { "3. Dzial Pliki." },
            { "4. Sygnatury zamkniecia by Dante." },
            { "Szefie zrob sobie przerwe, ile potrzebujesz minut?" },
            { "Twoja przerwa wyniesie(w sekundach): " } },
        { { "Niestety przerwa juz minela czas to roboty." },
            { "Podaj cyfry z zakresu 1-5: " },
            { "Koniec na dzisiaj do jutra!" },
            { "Aplikacja zakonczy dzialanie za (sek.)" },
            { "Administrowanie forum DDT:" } }
    };
    gotoxy( 20, 1 ); cout << dane[ 4 ][ 4 ];
    textcolor( 12 );
    gotoxy( 15, 2 ); cout << dane[ 0 ][ 0 ];
    gotoxy( 15, 3 ); cout << dane[ 0 ][ 1 ];
    gotoxy( 40, 2 ); cout << dane[ 0 ][ 2 ];
    gotoxy( 40, 3 ); cout << dane[ 0 ][ 3 ];
    gotoxy( 40, 4 ); cout << dane[ 0 ][ 4 ];
    gotoxy( 1, 5 );
    while( wybor != 6 )
    {
        cout << dane[ 1 ][ 0 ];
        cin >> wybor;
       
        switch( wybor ) {
        case 1:
            cout << dane[ 1 ][ 1 ] << endl << dane[ 1 ][ 2 ] << endl << dane[ 1 ][ 3 ]
            << endl << dane[ 1 ][ 4 ] << endl << endl;
            break;
        case 2:
            cout << dane[ 2 ][ 0 ] << endl;
            cout << dane[ 2 ][ 1 ] << "\t" << dane[ 2 ][ 2 ] << "\t" << dane[ 2 ][ 3 ]
            << endl << endl;
            break;
        case 3:
            cout << dane[ 2 ][ 4 ] << "\t\t" << dane[ 3 ][ 0 ] << endl << dane[ 3 ][ 1 ]
            << "\t\t" << dane[ 3 ][ 2 ] << endl << endl;
            break;
        case 4: {
                cout << dane[ 3 ][ 3 ] << endl;
                ( cin >> pauza ).get();
                clock_t koniec = int( pauza * 60 ) * CLOCKS_PER_SEC, start = clock();
                cout << dane[ 3 ][ 4 ] << pauza * 60 << endl;
                while( clock() - start < koniec );
               
                cout << dane[ 4 ][ 0 ] << endl << endl;
                break;
            }
        case 5: {
                cout << dane[ 4 ][ 2 ];
                clock_t start = clock(), koniec = 1 * CLOCKS_PER_SEC;
                for( int i = 5; i > 0; i-- ) {
                    cout << dane[ 4 ][ 3 ] << i << endl;
                    while( clock() - start < koniec );
                   
                }
                break;
            }
        }
    }
    getch();
    return( 0 );
}
Btw - zamiast pętli while lepiej użyc funkcji sleep().
P-10060
lackiluck1
Temat założony przez niniejszego użytkownika
» 2009-09-05 10:32:34
Macie rację to zależy od kompilatora bo jak spróbowałem na wxDevC++ to nie było błędów ale i tak musiełem poprawić kilka rzeczy.
P-10066
« 1 »
  Strona 1 z 1