Jak rozdrobniony na funkcje powinien być kod w c++?
Ostatnio zmodyfikowano 2016-08-15 13:44
Maciekb Temat założony przez niniejszego użytkownika |
Jak rozdrobniony na funkcje powinien być kod w c++? » 2016-08-04 15:10:55 Zastanawiam się do jakiego stopnia powinien być rozdrobniony na funkcje kod, ponieważ przykładzie z rozdziału 21 losowanie z określonego przedziału podzielone jest na 2 funkcje i main() podczas gdy w zadaniu z rozdziału 22, trzeba to samo zrobić w jednej funkcji. Czy mój program jest dobrze i ładnie napisany? Proszę o komentarz i pomoc :) Przykład z rozdziału 21: #include <iostream> #include <cstdlib> #include <ctime>
bool czyBylaWylosowana( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i ] == iLiczba ) return true; i++; } while( i < ile ); return false; }
int wylosuj() { return( rand() % 10 ) + 1; }
int main() { srand( time( 0 ) ); int wylosowane[ 5 ]; int wylosowanych = 0; do { int liczba = wylosuj(); if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false ) { wylosowane[ wylosowanych ] = liczba; wylosowanych++; } } while( wylosowanych < 5 ); wylosowanych = 0; do { std::cout << wylosowane[ wylosowanych ] << std::endl; wylosowanych++; } while( wylosowanych < 5 ); return 0; }
Mój program: #include <iostream> #include<cstdlib> #include<ctime> using namespace std; void wylosujLiczby( int tab[], int ile ) { int liczba; for( int licznik = 0; licznik < ile; licznik++ ) { liczba =( rand() % 21 ) + 10; for( int licznik2 = 0; licznik2 < licznik; licznik2++ ) { if( licznik != 0 && liczba == tab[ licznik2 ] ) { liczba =( rand() % 21 ) + 10; licznik2 = - 1; } } tab[ licznik ] = liczba; } } void wypiszTablice( int tab[], int ile ) { for( int licznik = 0; licznik < ile; licznik++ ) { cout << tab[ licznik ] << endl; } } void wypiszTabliceOdTylu( int tab[], int ile ) { cout << "Od tylu" << endl; for( int licznik = ile - 1; licznik >= 0; licznik-- ) { cout << tab[ licznik ] << endl; } }
int znajdzMaksimum( int tab[], int ile ) { for( int licznik = 0; ile > licznik; licznik++ ) { int czymax = 1; for( int licznik2 = 0; ile > licznik2; licznik2++ ) { if( tab[ licznik2 ] > tab[ licznik ] ) { czymax = 0; } } if( czymax == 1 ) { return tab[ licznik ]; } } } int znajdzMinimum( int tab[], int ile ) { for( int licznik = 0; ile > licznik; licznik++ ) { int czymin = 1; for( int licznik2 = 0; ile > licznik2; licznik2++ ) { if( tab[ licznik2 ] < tab[ licznik ] ) { czymin = 0; } } if( czymin == 1 ) { return tab[ licznik ]; } } } void wypiszMinMax( int iMin, int iMax ) { cout << "Max:" << iMax << endl; cout << "Min:" << iMin << endl; }
int main() { srand( time( NULL ) ); int tablica[ 10 ]; wylosujLiczby( tablica, 10 ); wypiszTablice( tablica, 10 ); wypiszTabliceOdTylu( tablica, 10 ); int iMax = znajdzMaksimum( tablica, 10 ); int iMin = znajdzMinimum( tablica, 10 ); wypiszMinMax( iMin, iMax ); return 0; }
|
|
j23 |
» 2016-08-04 18:18:05 To wypiszMinMax już mogłeś sobie darować ;) |
|
pekfos |
» 2016-08-15 13:44:13 Kod nie powinien być rozdrobniony, lecz pogrupowany. Jeśli w programie można wyizolować coś, co nazwałbyś "robnienie X", "obliczanie X", to coś takiego powinno być funkcją. (w granicach rozsądku, co do tego X..) Jeśli jakiś kod się powtarza, to też należy rozważyć wydzielenie tego kodu do osobnej funkcji. Funkcje, zwłaszcza te z "X", mają to do siebie, że można je wykorzystywać w wielu kolejnych programach, więc jeśli uznasz którąś z nich za wartą uwagi, nazwij ją najlepiej jak się da i wrzuć do jakiegoś pliku, który możesz potem dołączyć do programu, by mieć do tych funkcji dostęp. Jakieś #include "mojefunkcje.h". |
|
« 1 » |