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

-Jakość Pisanego Kodu-

Object Storage Arubacloud
0 głosów
183 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez Garper Początkujący (360 p.)

Witam,mój problem polega na jakości pisanego kodu pod względem składni i w związku z tym chciałbym poprosić o ewentualne uwagi oraz poprawienie podesłanego przeze mnie kodu.

#include <iostream>
#include <time.h>
#include <cstdlib>

//Prototypy funkcji

void fun(int *, const int );

void fun1(int *, const int );

void fun2(int *, const int );

void fun3(int*, const int );

void fun4(int*, const int );

void fun5(int*, const int);

void fun6(int*, const int );

void fun7(int* , const int );

void fun8(int *, const int);

//wypisywanie
void fun(int *tab,const int b) {
	
	int licznik = 0;
	std::cout << "\n-Wypisywanie elementow tablicy tab [ " << b << " ]-\n";
	while (licznik < b) {
       
		std::cout<<"\n"<<licznik<<". "<< *tab;
		tab++;
		licznik++;
	
	}
}	
	
//zamiana
void fun1(int *tab , const int b ) {

	//---------------------
	std::cout << "-Zamiana pierwszego z ostanim elementow tablicy tab [ " << b << " ]-\n";
	int licznik = 0;
	
	int mod1 = *tab;
	
	tab += b-1;//ostatnia
	
	int mod = *tab;
	
	*tab = mod1;
	
	tab -= b-1;//pierwsza
	
	*tab = mod;
	
	//----------------------
	
	while (licznik < b) {

		std::cout << "\n" << licznik << ". " << *tab;
		tab++;
		licznik++;

	}
}    

//zliczanie elementow 
void fun2(int *tab, const int b) {
	
	int licznik = 0, suma=0 ;
	
	while (licznik < b) {

		 suma++;
		 licznik++;
	}	
	std::cout << "#################################################\n";
	std::cout << "\n-Ilosc elementow tablicy: " << suma;

}

//suma
void fun3(int* tab, const int b) {

	int licznik = 0, suma=0;
	
	while (licznik < b) {

		suma += *tab;//suma elementow tablicy
		tab++;
		licznik++;
	}	
   
	std::cout << "-Suma elementow w tablicy: " << suma;

}	

//srednia
void fun4(int*tab, const int b) {
	
	int licznik = 0, suma = 0;
	double srednia;
	while (licznik < b) {

		suma += *tab;//suma elementow tablicy
		tab++;
		licznik++;
	}
	
	srednia = (suma / b) ;
	
	std::cout << "-Srednia elementow w tablicy: " << srednia;

}


//max i min wartosc tablicy
void fun5(int*tab, const int b) {
	
	int min= *tab,licznik=0, max = *tab;
	
	//wartosc maksymalna
	while (licznik < b) {

		if (max < * tab)
			max = *tab;
		tab++;
		licznik++;
	}
	
	std::cout << "#################################################\n";
	
	std::cout << "-Wartosc maksymalna tablicy: " << max;	
	//Potrzeba zamiany wskazania tablicy z elementu koncowego (z powodu inkrementacji tab). 
	//wartosc minimalna
	
	tab -= b;//zmiana tablicy na 1.
	
	licznik = 0;
	
	while (licznik < b) {
        
		if (min > * tab) 
		min= *tab;	
		tab++;
        licznik++;
	}	
	
	 std::cout << "\n\n-Wartosc minimalna tablicy: " << min;
	 
	 std::cout << "\n#################################################";
}    
//liczby przyste 
void fun6(int*tab, const int b) {

	int licznik = 0;
	int mod = *tab;
	int iloscp=0;
	while (licznik < b) {//petla ogolna do ilosci
		
		while (mod > 0) {
	  
		mod -= 2;//dekrementacja mod o 2
	    
	    }	
	
		if (mod == 0) {//jezeli wartosc mod =0 to wykonuj
         iloscp++;//zliczanie liczb parzystych
	     std::cout << "\nLiczba parzysta to: " << *tab;	
	    }
	   
	   licznik++;
	   tab++;//przelaczanie tablic 
	   mod = *tab;
	   
	}
	std::cout << "\nIlosc liczb przystych to: " << iloscp;
	
	std::cout << "\n################################################";
}    
void fun7(int* tab, const int b) {

	int licznik = 0;
	int mod = *tab;
	int iloscp = 0;
	while (licznik < b) {//petla ogolna do ilosci

		while (mod > 0) {

			mod -= 2;//dekrementacja mod o 2

		}

		if (mod < 0) {//jezeli wartosc mod =0 to wykonuj
			iloscp++;//zliczanie liczb parzystych
			std::cout << "\nLiczba parzysta to: " << *tab;
		}

		licznik++;
		tab++;//przelaczanie tablic 
		mod = *tab;

	}
	std::cout << "\nIlosc liczb przystych to: " << iloscp;

	std::cout << "\n################################################";
}

void fun8(int *tab, const int b) {

}


int main()
{
	std::cout << "---------------------------------------------------------------\n\n";
	std::cout << "Program wykonujacy Zadania z pomoca wywolania funckji void";
	
	//--------------------------
	
	const int b = 15;

	int tab[b],licznik=0;
	
	srand(time(NULL));
	
	//--------------------------
	
	while (licznik <b) {

		tab[licznik] = rand() % 10;
		
		licznik++;
	}	    
	
    //-------------
	std::cout << std::endl;
	fun(tab,b);
	std::cout << std::endl;
    //-------------
	std::cout << std::endl;
	fun1(tab, b);
	std::cout << std::endl;
    //-------------
	std::cout << std::endl;
	fun2(tab, b);
	std::cout << std::endl;
	//-----------
	std::cout << std::endl;
    fun3(tab, b);
	std::cout << std::endl;
    //-----------
    std::cout << std::endl;
	fun4(tab, b);
	std::cout << std::endl;
	//----------
	std::cout << std::endl;
	fun5(tab, b);
	std::cout << std::endl;
	//----------
	fun6(tab, b);
	std::cout << std::endl;
	//----------
	fun7(tab, b);
	std::cout << std::endl;
	//----------
	fun8(tab, b);
	std::cout << std::endl;
	//----------
	return 0;
}			

 

5 odpowiedzi

+1 głos
odpowiedź 5 listopada 2020 przez TOM_CPP Pasjonat (22,640 p.)
wybrane 5 listopada 2020 przez Garper
 
Najlepsza

Jeżeli chcesz poprawić ten kod, użyj STL , wtedy ilość kodu będzie można zmniejszyć do kilku/kilkunastu linijek.

Na przykład funkcja fun1 (nic nie mówiąca nazwa) może być zastąpiona przez std::swap

int table[] = {6,-9,87,33,1,0,-76};

std::swap(*std::begin(table),*std::rbegin(table));

 

+4 głosów
odpowiedź 4 listopada 2020 przez dequk Użytkownik (810 p.)
Pierwsza rzecz jaka mi się wrzuca w oczy to nazewnictwo funkcji. Patrząc na jej nazwę nie wiem co robi.
komentarz 4 listopada 2020 przez JakSky Stary wyjadacz (14,770 p.)
Dokładnie, fun8,fun7... Nic to nie mówi.
komentarz 4 listopada 2020 przez Wiciorny Ekspert (269,710 p.)
to raczej nawet jego kod nie jest, tylko chce ;D go przerobić i zrobić na swój ... bo mając pojecie o tym co sie pisze, to nie robi sie czegos takiego
komentarz 4 listopada 2020 przez Garper Początkujący (360 p.)
To jest mój własnoręcznie napisany kod więc nie oczekuje po was gotowej pracy tylko rady.

Poza tym jakim trzeba by było być bezmózgiem żeby mając już gotowy materiał od kogoś nie skorzystać z jego rady odnośnie jego pracy. Dodatkowo moja praca ma charakter dodatkowy więc nic z tego nie zyskam ;D.

Pozdrawiam.
+1 głos
odpowiedź 4 listopada 2020 przez Wiciorny Ekspert (269,710 p.)

Poprawić to można błędy, a refaktoryzować to powinieneś sam po uwagach od kogoś - co zmienić, a nie oczekiwać że ktoś "podrasuje, upiększy twój kod". 
Sięgając do odpowiednich materiałów - samemu to powinieneś zrobić. 

void fun(int *, const int );
 
void fun1(int *, const int );
 
void fun2(int *, const int );
 
void fun3(int*, const int );
 
void fun4(int*, const int );
 
void fun5(int*, const int);
 
void fun6(int*, const int );
 
void fun7(int* , const int );
 
void fun8(int *, const int);

co to jest za pomysł żeby tworzyć tyle funkcji o tych samych parametrach ?

1
komentarz 4 listopada 2020 przez Oscar Nałogowiec (29,290 p.)

Przynajmniej niektóre z nich powinny mieć pierwszy parametr const int *

komentarz 4 listopada 2020 przez Garper Początkujący (360 p.)
Nie jest to konieczne ale dzięki.
komentarz 4 listopada 2020 przez Garper Początkujący (360 p.)
Treść zadania wymaga stworzenia funkcji wykonujących kojne zadania.Każda osobno. Jeżeli miałbym możliwość to oczywiście skorzystałbym z przeciążenia funkcji.
+1 głos
odpowiedź 4 listopada 2020 przez Whiskey_Taster Pasjonat (15,610 p.)
Fiu, fiu, jest co robić. Pierwsza sprawa - rozdziel to. Przy takiej ilości funkcji najlepiej jest podzielić program na pliki, co by sobie życia nie utrudniać.

Druga sprawa - nazewnictwo. Nie wiadomo co funkcja robi, trzeba się wczytać albo w komentarz, a nawet to nie daje pewności, że od razu się zrozumie o co chodzi. W dodatku ja bym w prototypach nazywał zmienne, żeby też same zmienne, które przekazujemy dawały informację o tym, czym są.
komentarz 4 listopada 2020 przez Garper Początkujący (360 p.)
Dzięki za radę. A jeżeli chodzi o użycie plików niestety na razie w szkole do której uczęszczam nie bierzemy jeszcze tego materiału.
0 głosów
odpowiedź 5 listopada 2020 przez wizarddos Nałogowiec (25,930 p.)

Może zamiast pisać ciągle std::cout<<".."<<std::endl; dodaj na górze, pod plikami nagłówkowymi to

using namespace std;

 

1
komentarz 5 listopada 2020 przez Garper Początkujący (360 p.)
Nie lubię używać przestrzeni nazw standardowych w tej postaci i tego także tobie radzę gdyż w większych projektach jej użycie z powodu niewydajności nie opłaca się.

Podobne pytania

+2 głosów
2 odpowiedzi 197 wizyt
pytanie zadane 22 listopada 2020 w JavaScript przez Chlipchlip Użytkownik (850 p.)
0 głosów
2 odpowiedzi 124 wizyt
pytanie zadane 23 czerwca 2020 w JavaScript przez patrick167 Początkujący (260 p.)
+2 głosów
3 odpowiedzi 6,220 wizyt
pytanie zadane 6 kwietnia 2015 w HTML i CSS przez DL TD Nałogowiec (36,710 p.)

92,551 zapytań

141,398 odpowiedzi

319,529 komentarzy

61,936 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!

...