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

Ocena kodu (do Piotra)

Ostatnio zmodyfikowano 2008-02-22 08:16
Autor Wiadomość
gates22
Temat założony przez niniejszego użytkownika
Ocena kodu (do Piotra)
» 2008-02-21 15:57:13
Witam. Mam pytanie do Piotra Sz. Otoz C++ ucze sie od mojego brata studiujacego Informatyke i napisalem sobie kod (ale nie taki jak uczy kurs na tej stronie) Otoz chcialbym sie dowiedziec na ile Piotr ocenia ten kodi moje umiejetnosci:

C/C++
#include<iostream>
#include<conio.h>
#include<string>
#include<stdio.h>
#include<fstream>
#include<windows.h>
using namespace std;
int program;
string a;
int main( int argc, char * argv[] )
{
    /****************************Rozpoczecie programu, Haslo**********************************/
    prog:
   
    system( "color 20" );
    cout << "\t\t\t\tPODAJ HASLO: " << "\n";
    cin >> a;
   
    if( a == "Microsoft" )
    {
       
        cout << "\t\t\t       Haslo poprawne" << endl;
        getch(); system( "cls" );
       
    }
   
    else
    {
       
        cout << "\t\t\t\t Haslo zle" << endl;
        getch(); system( "cls" );
        goto prog; // gdy haslo jest zle wraca do momentu prog
       
       
    }
    /****************************Ekran Powitalny*************************************/
    system( "color 30" );
    cout << "\n\t\t\t       KOLEKCJONER HASEL" << endl;
    cout << "\n\n\t\t\t()()()()()()()()()()" << endl;
    cout << "\t\t\t)                  (" << endl;
    cout << "\t\t\t(      |           )" << endl;
    cout << "\t\t\t)     |         1  (" << endl;
    cout << "\t\t\t(     |            )" << endl;
    cout << "\t\t\t)    |   @ @   2   (" << endl;
    cout << "\t\t\t(    |   @ @       )" << endl;
    cout << "\t\t\t)    |   @ @   3   (      *====|" << endl;
    cout << "\t\t\t(    |___@ @       )      *====|" << endl;
    cout << "\t\t\t)              0   (      * *" << endl;
    cout << "\t\t\t(                  )      * *" << endl;
    cout << "\t\t\t)                  (      * *" << endl;
    cout << "\t\t\t()()()()()()()()()()      * *" << endl;
    cout << "\t\t\t    *          *          * ***" << endl;
    cout << "\t\t\t   **************         * @ *" << endl;
    cout << "\t\t\t                          *****" << endl;
    cout << "Czekaj, trwa ladowanie...\n" << endl;
    for( int i = 1; i <= 5; i++ )
    {
        Sleep( 1000 );
        cout << "[|]";
    }
    system( "cls" );
   
   
    /***************************Prezentacja zapisanych w programie jego uztkownikow************************/
   
    {
        system( "color 20" );
        cout << "\t\t\t     UZYTKOWNICY PROGRAMU\n" << endl;
        ifstream osoby;
        osoby.open( "ludzie.txt", ios::in );
        while( true )
        {
           
            cout << "-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-\n" << endl;
            char imie[ 10000 ];
            osoby.getline( imie, 10000 );
            if( osoby.gcount() == 0 )
                 break;
           
            cout << "Imie: " << imie << endl;
            char nazw[ 10000 ];
            osoby.getline( nazw, 10000 );
            if( osoby.gcount() == 0 )
                 break;
           
            cout << "Nazwisko: " << nazw << "\n" << endl;
        }
        osoby.close();
        Sleep( 4000 );
        system( "cls" );
       
    }
   
    /****************************MENU programu***********************************/
   
    lol:
    while( true )
    {
        cout << "\t\t\t\t     MENU\n" << endl;
        cout << "\t\t    *                                    *" << endl;
        cout << "\t\t   ****************************************" << endl;
        cout << "\t\t    * [1] Dodaj haslo                    *" << endl;
        cout << "\t\t    * [2] Zobacz kolekcje hasel          *" << endl;
        cout << "\t\t    * [3] Dodaj uzytkownika programu     *" << endl;
        cout << "\t\t    * [4] Zobacz uzytkownikow programu   *" << endl;
        cout << "\t\t    * [5] Usun baze danych z haslami     *" << endl;
        cout << "\t\t    * [6] Usun baze danych z osobami     *" << endl;
        cout << "\t\t    * [7] Zobacz INFO o programie        *" << endl;
        cout << "\t\t    * [8] Wykonaj restart programu       *" << endl;
        cout << "\t\t    * [0] Zakoncz program                *" << endl;
        cout << "\t\t    *                                    *" << endl;
        cout << "\t\t   ****************************************" << endl;
        cout << "\t\t    *                                    *\n" << endl;
        cout << "Wybieram: " << endl;
        cin >> program;
        system( "cls" );
        switch( program )
       
        {
            /*******************************Funkcje Programu**************************************/
        case 1:
            {
                cout << "\t\t\t\tDODAWANIE HASLA\n" << endl;
                ofstream hasla;
                hasla.open( "haslo.txt", ios::out | ios::app );
                cout << "Haslo: ";
                string haslo;
                cin >> haslo;
                hasla << haslo << endl;
                cout << "\nTyp[PIN, PUK...]: ";
                string typ;
                cin >> typ;
                hasla << typ << endl;
                hasla.close();
                system( "cls" );
                cout << "\n\n\n\n\n\n\n\n\n\t\t\t     HASLO ZOSTALO ZAPISANE" << endl;
                getch();
                system( "cls" );
                break;
            }
           
        case 2:
            {
               
                cout << "\t\t\t\t PRZEGLAD HASEL\n" << endl;
                ifstream hasla;
                hasla.open( "haslo.txt", ios::in );
                while( true )
                {
                    cout << "*******************************************************************************" << endl;
                    char haslo[ 1000 ];
                    hasla.getline( haslo, 1000 );
                    if( hasla.gcount() == 0 ) break;
                   
                    cout << "Haslo: " << haslo << endl;
                    char typ[ 1000 ];
                    hasla.getline( typ, 1000 );
                    if( hasla.gcount() == 0 ) break;
                   
                    cout << "Typ: " << typ << endl;
                }
                hasla.close();
                getch();
                system( "cls" );
                break;
            }
           
        case 3:
            {
               
                cout << "\t\t\t       DODAWANIE OSOBY\n" << endl;
                ofstream osoby;
                osoby.open( "ludzie.txt", ios::out | ios::app );
                cout << "Imie: ";
                string imie;
                cin >> imie;
                osoby << imie << endl;
                cout << "\nNazwisko: ";
                string nazw;
                cin >> nazw;
                osoby << nazw << endl;
                osoby.close();
                system( "cls" );
                cout << "\n\n\n\n\n\n\n\n\n\t\t\t     OSOBA ZOSTALA ZAPISANA" << endl;
                getch();
                system( "cls" );
                break;
            }
           
        case 4:
            {
               
                cout << "\t\t\t\tPRZEGLAD OSOB\n" << endl;
                ifstream osoby;
                osoby.open( "ludzie.txt", ios::in );
                while( true )
                {
                   
                    cout << "===============================================================================" << endl;
                    char imie[ 1000 ];
                    osoby.getline( imie, 1000 );
                    if( osoby.gcount() == 0 )
                         break;
                   
                    cout << "Imie: " << imie << endl;
                    char nazw[ 1000 ];
                    osoby.getline( nazw, 1000 );
                    if( osoby.gcount() == 0 )
                         break;
                   
                    cout << "Nazwisko: " << nazw << endl;
                }
                osoby.close();
                getch();
                system( "cls" );
                break;
            }
           
           
        case 5:
            {
                int a;
                cout << "\n\n\t       CZY NAPEWNO CHCESZ USUNAC BAZE? [TAK-1, NIE-0]" << endl;
                cin >> a;
                system( "cls" );
               
                if( a == 1 )
                {
                   
                    {
                       
                        if( remove( "haslo.txt" ) != 0 )
                             cout << "\n\n\n\n\n\n\n\n\n\t\t\t      BRAK TAKIEJ BAZY";
                       
                        else
                             cout << "\n\n\n\n\n\n\n\n\n\t\t\t    BAZA ZOSTALA USUNIETA";
                       
                        getch();
                        system( "cls" );
                        goto lol;
                       
                    }
                   
                case 6:
                    {
                        int a;
                        cout << "\n\n\t       CZY NAPEWNO CHCESZ USUNAC BAZE? [TAK-1, NIE-0]" << endl;
                        cin >> a;
                        system( "cls" );
                       
                        if( a == 1 )
                        {
                           
                            {
                               
                                if( remove( "ludzie.txt" ) != 0 )
                                     cout << "\n\n\n\n\n\n\n\n\n\t\t\t      BRAK TAKIEJ BAZY";
                               
                                else
                                     cout << "\n\n\n\n\n\n\n\n\n\t\t\t   BAZA ZOSTALA USUNIETA";
                               
                                getch();
                                system( "cls" );
                                goto lol;
                               
                            }
                           
                        case 7:
                            {
                               
                                cout << "\t\t\t\t     INFO\n" << endl;
                                cout << "\t    *                                                        *" << endl;
                                cout << "\t   ************************************************************" << endl;
                                cout << "\t    * Jezyk w jakim zostal napisany program: C++             *" << endl;
                                cout << "\t    * Kompilator w jakim zostal skompilowany program: Dev-C++*" << endl;
                                cout << "\t    * Wersja programu: 1.0                                   *" << endl;
                                cout << "\t    *                                                        *" << endl;
                                cout << "\t   ************************************************************" << endl;
                                cout << "\t    *                                                        *" << endl;
                                getch();
                                system( "cls" );
                                goto lol;
                               
                            }
                           
                        case 8:
                            {
                                for( int i = 1; i <= 1; i++ )
                                {
                                   
                                    cout << "\n\n\n\n\n\n\n\n\t\t     RESTART PROGRAMU NASTAPI ZA: ";
                                    cout << "5";
                                    Sleep( 1000 );
                                    system( "cls" );
                                    cout << "\n\n\n\n\n\n\n\n\t\t     RESTART PROGRAMU NASTAPI ZA: ";
                                    cout << "4";
                                    Sleep( 1000 );
                                    system( "cls" );
                                    cout << "\n\n\n\n\n\n\n\n\t\t     RESTART PROGRAMU NASTAPI ZA: ";
                                    cout << "3";
                                    Sleep( 1000 );
                                    system( "cls" );
                                    cout << "\n\n\n\n\n\n\n\n\t\t     RESTART PROGRAMU NASTAPI ZA: ";
                                    cout << "2";
                                    Sleep( 1000 );
                                    system( "cls" );
                                    cout << "\n\n\n\n\n\n\n\n\t\t     RESTART PROGRAMU NASTAPI ZA: ";
                                    cout << "1";
                                    Sleep( 1000 );
                                    system( "cls" );
                                    goto prog;
                                   
                                }
                               
                               
                               
                            case 0:
                                {
                                   
                                    cout << "\n\n\n\n\n\n\n\n\t\t     DZIEKUJE ZA SKORZYSTANIE Z PROGRAMU :-)" << endl;
                                    Sleep( 2000 );
                                    return 0;
                                }
                                default:
                                cout << "\n\n\n\n\n\n\n\n\n\t\t       BRAK TAKIEJ FUNKCJI W  MENU !!!" << endl;
                                getch();
                                system( "cls" );
                               
                            }
                           
                        }
                    }
                }
            }
        }
       
    }
}
[ / code ]

Z gory dz: )
P-343
DejaVu
Ocena
» 2008-02-21 21:30:01
Najpierw trochę ostrej krytyki:

1. Używanie etykiet w nowoczesnym stylu kodowania jest niedopuszczalne.
2. Brak znajomości programowania dynamicznego.
3. Słaba znajomość pętli for - przykład:
C/C++
for( int i = 1; i <= 1; i++ )
{
   
    cout << "\n\n\n\n\n\n\n\n\t\t     RESTART PROGRAMU NASTAPI ZA: ";
    cout << "5";
    Sleep( 1000 );
    system( "cls" );
    cout << "\n\n\n\n\n\n\n\n\t\t     RESTART PROGRAMU NASTAPI ZA: ";
    cout << "4";
    Sleep( 1000 );
    system( "cls" );
    cout << "\n\n\n\n\n\n\n\n\t\t     RESTART PROGRAMU NASTAPI ZA: ";
    cout << "3";
    Sleep( 1000 );
    system( "cls" );
    cout << "\n\n\n\n\n\n\n\n\t\t     RESTART PROGRAMU NASTAPI ZA: ";
    cout << "2";
    Sleep( 1000 );
    system( "cls" );
    cout << "\n\n\n\n\n\n\n\n\t\t     RESTART PROGRAMU NASTAPI ZA: ";
    cout << "1";
    Sleep( 1000 );
    system( "cls" );
    goto prog;
   
}
4. Brak znajomości tworzenia funkcji
5. Korzystanie z poleceń systemowych do czyszczenia ekranu i innych efektów (np. kolorowanie tła) jest również niedopuszczalne
6. Nieprawidłowe osadzenie instrukcji case (dziwię się, że kompilator nie krzyczy i przepuszcza to)... - fragment programu:
C/C++
case 5:
{
    int a;
    cout << "\n\n\t       CZY NAPEWNO CHCESZ USUNAC BAZE? [TAK-1, NIE-0]" << endl;
    cin >> a;
    system( "cls" );
   
    if( a == 1 )
    {
        //...
    case 6:
        {
            //...
        }
    }

Słowa otuchy:
Grunt to się nie zniechęcać do programowania, jeśli Ciebie to interesuje. Programowanie jak każda nauka wymaga czasu i ponadprzeciętnego nakładu własnej pracy.
Wydaje mi się, że rozumiesz jak działa instrukcja warunkowa if. Widzę też, że kombinowałeś coś z plikami (nie wnikałem jak daleko się z tym posunąłeś), jednak polecam najpierw zrozumieć dobrze zasady działania pętli, ponieważ bez tego generalnie nie da się programować.

/edit:
Generalnie oceniam, że mogłeś spędzić na nauce programowania nie więcej niż 30 godzin. Jak będziesz miał już na swoim koncie z 500 godzin programowania, to patrząc na ten kod sam zrozumiesz czemu tak 'niekorzystną ocenę' wystawiłem dla tego programu.

Mimo wszystko, jeśli Ciebie to interesuje, to warto rozwijać te zainteresowania. Od czegoś trzeba zacząć i błędów własnych nie należy się wstydzić tylko z nich wyciągać wnioski :)

/edit2:
Aaa i jeszcze jedno. Nie pozwól na to żeby osoby, które nie znają się na programowaniu obrzydziły Ci je, bo tacy się napewno trafią w Twoim życiu jeśli będziesz swoje umiejętności rozwijał.
P-344
gates22
Temat założony przez niniejszego użytkownika
Dziekuje
» 2008-02-22 08:16:05
DZiekuje. Kazda krytyke przyjmuje z szcunkiem i wyciagam z niej wnioski :) Tylko mała poprawka. Jesli chodzi o to czy umiem i rozumiem robienie funkcji to tak, umie je. Tylko ten kod był napisany przeze mnie dawno. Na poczatku mojej nauki jak jeszcze tego nie umialem. Teraz juz mysle ze zrobilem postepy, poniewaz robie programy na funkcje czyli void nazwa() itd. Ten programik tez zamierzam tak zrobic i byc moze bedzie lepiej :)
P-345
« 1 »
  Strona 1 z 1