• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Refaktoryzacja kodu.

Object Storage Arubacloud
0 głosów
519 wizyt
pytanie zadane 17 stycznia 2016 w C i C++ przez Informatyk# Obywatel (1,060 p.)

Bardzo proszę o rady jak mogę ten kod zrefaktoryzować

Oto kod : 

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <stdio.h>
#include <windows.h>

using namespace std;
int wybor;
float srednia, j, d, t, cz, p, sz;
int main()
{

for (;;)
   {system("cls");
    cout << "MENU GLOWNE" << endl;
    cout << "--------------" << endl;
    cout << "1.Srednia ocen" << endl;
    cout << "2.Wyjscie" << endl;

    cout << "Wybierz: " ;
    if (!(cin >> wybor))
    {
        cerr<<"To nie jest wlasciwa liczba! Wlacz program jeszcze raz";
        Sleep (3000);
    exit(0);

    }
system("cls");

    switch(wybor)
      {
      case 1:
        {cout << "Program policzy srednia ocen ucznia. \n";
        cout << "Podaj kolejno ilosc ocen, o ktore zapytam: \n";
        do
    {
        cout << "Ile jedynek ma uczen? ";
        cin >> j;
    }
    while( j < 0 );

    do
    {
        cout << "Ile dwojek ma uczen? ";
        cin >> d;
    }
    while( d < 0 );

    do
    {
        cout << "Ile trojek ma uczen? ";
        cin >> t;
    }
    while( t < 0 );

    do
    {
        cout << "Ile czworek ma uczen? ";
        cin >> cz;
    }
    while( cz < 0 );

    do
    {
        cout << "Ile piatek ma uczen? ";
        cin >> p;
    }
    while( p < 0 );

    do
    {
        cout << "Ile szostek ma uczen? ";
        cin >> sz;
    }
    while( sz < 0 );

system("cls");
    srednia =(( j * 1 ) +( d * 2 ) +( t * 3 ) +( cz * 4 ) +( p * 5 ) +( sz * 6 ) ) /( j + d + t + cz + p + sz );
    cout << "Srednia ocen tego ucznia wynosi: " << fixed << setprecision( 2 )<< srednia<<endl;
    cout << "Jesli chcesz obliczyc inna srednia wcisnij klawisz ENTER";
  getchar(); getchar();}
    break;
      case 2:
        exit(0);
        break;
        default:
        cout <<"Nieprawidlowa liczba!";

        break;}
   }
getchar(); getchar();

    return 0;
}

 

5 odpowiedzi

+2 głosów
odpowiedź 17 stycznia 2016 przez Estern Nowicjusz (180 p.)

Radziłbym wykorzystać do tego tablice i wprowadzać dane w pętli.

for (i=0; i<6; i++)
{
        cout << "Ile " << (i+1) << " ma uczen? ";
        cin >> tablica[i];
}

Podobnie w pętli wyliczyć średnią.

+2 głosów
odpowiedź 17 stycznia 2016 przez Grzyboo Nałogowiec (28,860 p.)
Przede wszystkim nazywaj zmienne tak, żeby ich nazwa oddawała do czego służą.

+ wcięcia ładne zrób.
+1 głos
odpowiedź 17 stycznia 2016 przez event15 Szeryf (93,790 p.)

A ja bym chciał wiedzieć, co rozumiesz poprzez refaktoryzację

komentarz 17 stycznia 2016 przez Informatyk# Obywatel (1,060 p.)
Sprowadzenie kodu do najprostszej postaci :)
0 głosów
odpowiedź 17 stycznia 2016 przez Informatyk# Obywatel (1,060 p.)
jest to kalkulator średniej ocen,
0 głosów
odpowiedź 17 stycznia 2016 przez Patrycjerz Mędrzec (192,320 p.)

Pokrótce:

  1. Używanie using namespace std (ale to tylko moja uwaga)
  2. Zmienne globalne
  3. Nazwy zmiennych nie mówiące niczego konkretnego
  4. Brak podziału programu na funkcje
  5. Często powtarzające się bloki programu (czyli powinieneś użyć pętli i funkcji)
  6. Podwójne użycie getchar (wiem, że pan Mirosław tak pokazywał, ale to nie jest odpowiednie rozwiązanie; powinieneś użyć wcześniej std::cin.sync - czyści bufor strumienia, z którego korzysta także getchar)
komentarz 17 stycznia 2016 przez Informatyk# Obywatel (1,060 p.)

A jak mam napisane to using namespace std to czy muszę pisać std::cin.sync?

komentarz 17 stycznia 2016 przez Patrycjerz Mędrzec (192,320 p.)

Nie. 12 znaków, blablabla

Podobne pytania

0 głosów
2 odpowiedzi 8,678 wizyt
pytanie zadane 4 października 2015 w C i C++ przez Kubix Nowicjusz (120 p.)
0 głosów
1 odpowiedź 616 wizyt
pytanie zadane 16 sierpnia 2016 w C i C++ przez Informatyk# Obywatel (1,060 p.)
0 głosów
0 odpowiedzi 334 wizyt

92,620 zapytań

141,474 odpowiedzi

319,813 komentarzy

62,004 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...