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

Ćwiczenie 12.6

Ostatnio zmodyfikowano 2010-09-21 17:29
Autor Wiadomość
Elejdor
Temat założony przez niniejszego użytkownika
Ćwiczenie 12.6
» 2010-09-20 14:07:13
Jak zrobić odliczanie po zegarach znajdujących się w case 4 i na końcu programu? Dlaczego wywala błąd jak wstawię default: break; po case 4 (tylko wtedy gdy znajduje się tam zegar)? Jak dodać sprawdzanie czy podana wartość była liczbą?


C/C++
#include <iostream>
#include <conio.h>
#include "console.ddt"
#include <ctime>

using namespace std;
using namespace ddt::console;

int main()
{
    char biale_znaki[ 50 ] = "         ";
    int txtcolor = 8;
    int wybor;
    char koniec;
    textcolor( txtcolor );
    char menu1[ 7 ][ 6 ][ 200 ]
    {
        { "Panel administracyjny",
            "\nCo chcesz zrobic? ", },
        //menu
       
       
        {
            "1. Czytaj logi",
            "2. Usun temat",
            "3. Lista oczekujacych prac",
            "4. Przerwa",
            "5. Koniec",
        },
        //logi
        {
            "Jakies glupoty bedace logami\n"
            "Inne glupoty\n"
            "Koniec glupot, lecimy dalej.\n"
        },
        //Usun temat
        {
            "Tematy do usuniecia:",
            "Temat 1",
            "Temat 2",
            "Temat 3",
        },
        //Lista oczekujacych prac
        {
            "Prace do sprawdzenia:",
            "Praca 1",
            "Praca 2",
            "Praca 3",
            "Praca 4",
        },
        {
            "Ile minut zajmie Ci przerwa?\n",
            "Niestety przerwa juz minela, czas wracac do pracy",
        },
        {
            "Koniec na dzisiaj, do jutra!",
            "Program zamknie sie za ",
        },
       
       
       
       
    };
   
    do {
        system( "cls" );
        gotoxy( 30, 1 );
        cout << menu1[ 0 ][ 0 ];
        txtcolor = 2;
        textcolor( txtcolor );
        gotoxy( 15, 2 );
        cout << menu1[ 1 ][ 0 ];
        gotoxy( 15, 3 );
        cout << menu1[ 1 ][ 1 ];
        gotoxy( 15, 4 );
        cout << menu1[ 1 ][ 2 ];
        gotoxy( 45, 2 );
        cout << menu1[ 1 ][ 3 ];
        gotoxy( 45, 3 );
        cout << menu1[ 1 ][ 4 ];
        gotoxy( 1, 5 );
        cout << menu1[ 0 ][ 1 ];
        again:
        ( cin >> wybor ).get();
        switch( wybor )
        {
        case 1:
            cout << endl << menu1[ 2 ][ 0 ] << "\n\nPress ENTER to return";
            getch();
            break;
        case 2:
            cout << endl << menu1[ 3 ][ 0 ] << endl;
            cout << menu1[ 3 ][ 1 ] << biale_znaki << menu1[ 3 ][ 2 ] << biale_znaki << menu1[ 3 ][ 3 ] << "\n\nPress ENTER to return.";
            getch();
            break;
        case 3:
            cout << endl << menu1[ 4 ][ 0 ];
            cout << menu1[ 4 ][ 1 ] << biale_znaki << menu1[ 4 ][ 2 ] << endl << menu1[ 4 ][ 3 ] << biale_znaki << menu1[ 4 ][ 4 ] << "\n\nPress ENTER to return.";
            getch();
            break;
        case 4:
            cout << menu1[ 5 ][ 0 ];
            float min;
            ( cin >> min ).get();
            clock_t koniec =( min * 60 ) * CLOCKS_PER_SEC;
            clock_t start = clock();
            cout << "Koniec przerwy za " << min << " minut." << endl;
            while( clock() - start < koniec );
           
            cout << menu1[ 5 ][ 1 ] << endl << "\nPress enter to return";
            getch();
            break;
           
           
        };
    } while( wybor != 5 );
   
    float sec = 5;
   
    clock_t koniec2 = sec * CLOCKS_PER_SEC;
    clock_t start2 = clock();
    while( clock() - start2 < koniec2 )
         cout << clock();
   
    ;
   
}
P-22164
ThudPoland
» 2010-09-20 14:28:12
Co co znaków i "wykrywania" liczb - looknij na tą tabelę - rozwiązanie samo się nawinie jeżeli popatrzysz na to logicznie:
Tabela ASCII.

Algorytm zamieniania znaków na stringi też jest łatwy do napisania, albo użyj gotowego. Poszukaj.
P-22166
Elejdor
Temat założony przez niniejszego użytkownika
» 2010-09-20 15:16:15
Nadal pozostają kłopoty z zegarami. Nie mogę po nich umieścić default ani kolejnego case.
P-22170
DejaVu
» 2010-09-20 18:41:03
Nie można deklarować zmiennych w switch'u. Wyjaśnienie zagadnienia oraz możliwe rozwiązania problemu opisane są w lekcji  » Kurs C++ » Poziom 1Warunek wielokrotnego wyboru switch ... case lekcja.
P-22183
Elejdor
Temat założony przez niniejszego użytkownika
» 2010-09-21 16:52:44
Jak dodać odliczanie do zegarów?
Chcę żeby wyświetlało się:
Program zakończy pracę za 3, 2, 1.
Analogicznie przy przerwie.


C/C++
#include <iostream>
#include <conio.h>
#include "console.ddt"
#include <ctime>
#include <cctype>
using namespace std;
using namespace ddt::console;


int main()
{
   
   
    float min;
    char biale_znaki[ 50 ] = "         ";
    int txtcolor;
    char wybor;
    char koniec;
    textcolor( txtcolor );
    char menu1[ 7 ][ 6 ][ 200 ]
    {
        { "Panel administracyjny",
            "\nCo chcesz zrobic? ", },
        //menu
       
       
        {
            "1. Czytaj logi",
            "2. Usun temat",
            "3. Lista oczekujacych prac",
            "4. Przerwa",
            "5. Koniec",
        },
        //logi
        {
            "Jakies glupoty bedace logami\n"
            "Inne glupoty\n"
            "Koniec glupot, lecimy dalej.\n"
        },
        //Usun temat
        {
            "Tematy do usuniecia:",
            "Temat 1",
            "Temat 2",
            "Temat 3",
        },
        //Lista oczekujacych prac
        {
            "Prace do sprawdzenia:",
            "Praca 1",
            "Praca 2",
            "Praca 3",
            "Praca 4",
        },
        {
            "Ile minut zajmie Ci przerwa?\n",
            "Niestety przerwa juz minela, czas wracac do pracy",
        },
        {
            "Koniec na dzisiaj, do jutra!",
            "Program zamknie sie za ",
        },
       
       
       
       
    };
   
    do {
        txtcolor = 8;
        textcolor( txtcolor );
        system( "cls" );
        gotoxy( 30, 1 );
        cout << menu1[ 0 ][ 0 ];
        txtcolor = 2;
        textcolor( txtcolor );
        gotoxy( 15, 2 );
        cout << menu1[ 1 ][ 0 ];
        gotoxy( 15, 3 );
        cout << menu1[ 1 ][ 1 ];
        gotoxy( 15, 4 );
        cout << menu1[ 1 ][ 2 ];
        gotoxy( 45, 2 );
        cout << menu1[ 1 ][ 3 ];
        gotoxy( 45, 3 );
        cout << menu1[ 1 ][ 4 ];
        gotoxy( 1, 5 );
        cout << menu1[ 0 ][ 1 ];
        again:
        ( cin >> wybor ).get();
       
       
       
        if( isalpha( wybor ) ) { cout << "To nie jest liczba." << endl << "Press any key to continue.";
            getch(); }
        else {
           
           
            switch( wybor )
            {
            case '1':
                cout << endl << menu1[ 2 ][ 0 ] << "\n\nPress any key to continue.";
                getch();
                break;
            case '2':
                cout << endl << menu1[ 3 ][ 0 ] << endl;
                cout << menu1[ 3 ][ 1 ] << biale_znaki << menu1[ 3 ][ 2 ] << biale_znaki << menu1[ 3 ][ 3 ] << "\n\nPress any key to continue.";
                getch();
                break;
            case '3':
                cout << endl << menu1[ 4 ][ 0 ];
                cout << endl << menu1[ 4 ][ 1 ] << biale_znaki << menu1[ 4 ][ 2 ] << endl << menu1[ 4 ][ 3 ] << biale_znaki << menu1[ 4 ][ 4 ] << "\n\nPress any key to continue.";
                getch();
                break;
            case '4':
                cout << menu1[ 5 ][ 0 ];
               
                ( cin >> min ).get();
                clock_t koniec;
                koniec =( min * 60 ) * CLOCKS_PER_SEC;
                clock_t start;
                start = clock();
                cout << "Koniec przerwy za " << min << " minut." << endl;
                while( clock() - start < koniec );
               
                cout << menu1[ 5 ][ 1 ] << endl << "\nPress any key to continue.";
                getch();
                break;
               
            case '5':
                int sec;
                sec = 1;
                clock_t koniec2;
                koniec2 = sec * CLOCKS_PER_SEC;
                clock_t start2;
                start2 = clock();
               
                while( clock() - start2 < koniec2 );
               
               
               
               
                return 0;
               
               
                break;
                default:
                cout << "\nPodana liczba jest nieprawilowa." << endl << "Press any key to continue";
                getch();
               
                break;
               
               
            };
        };
       
    } while( true );
   
   
   
   
   
    ;
   
}
P-22217
szyx_yankez
» 2010-09-21 17:29:38
Dla przykładu:
C/C++
#include <iostream>
#include <time.h>

int main()
{
    void countdown( int & );
    int sec( 10 );
    int foo( 3 );
   
    switch( foo )
    {
    case 1:
        //
    case 2:
        //
    case 3:
        countdown( sec );
    }
   
    return false;
}


void countdown( int & second )
{
    int _time( 0 );
   
    do
    {
       
        if( _time + 1000 <= clock() )
        {
            _time = clock();
            second--;
        }
        std::cout << "Program zakonczy dzialania za " << second << " sekund\n";
    } while( second );
   
}
P-22219
« 1 »
  Strona 1 z 1