Anonymní profil Michael – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Michael – Programujte.comAnonymní profil Michael – Programujte.com

 

Příspěvky odeslané z IP adresy 77.48.24.–

Michael
C / C++ › Úkol: Zpracování záznamu žák…
4. 6. 2016   #211165

Dovolil jsem si tedy do vašeho projektu přidat komentáře své, snad odpovídají tomu, co jednotlivé řádky skutečně dělají. Jinak děkuju za pomoc. 

//IMPORT KNIHOVEN
#include <iostream>
#include <string>
#include <fstream>
#include <stdlib.h>

using namespace std;

int main(){

	//ZALOZENI PROMENNYCH
	int konec_jm;
	int znamky=0;
	int poc_zn=0;
	int projekty=0;
	int poc_pr=0;
	int oddelovac;
    int pocet_mez=0;

	//VYPIS NA KONZOLU
	cout<< "PROSPECH:"<< endl;
	cout << "==========================================" << endl;
	cout << "JMENO" << '\t' << '\t' << "  HODNOCENI" << endl;
	cout << "==========================================" << endl;

    fstream vstup("data.txt"); //urceni odkud se data budou do proudu cerpat
    string radek; //zalozeni promenne radek

    while(getline(vstup,radek)){ //nacitani jednotlivych radku
 
		int delka=radek.size(); //nastaveni promenne delka na hodnotu poctu znaku na radku

		// cyklus urcuje, kdy konci jmeno, pracuje dokud neni na konci radku
		for(int i=0;i<delka;i++){

			if(radek[i]==' '){ //pokud najde znak mezery, promenna pocet_mez
				pocet_mez++;   //se zvysi o 1
			}
			if(pocet_mez==2){ //pokud je pocet mezer roven dvema, konci jmeno
			konec_jm=i-1;	  //a zacinaji znamky
			}
		}
		cout << radek.substr(0,konec_jm) << '\t' ; //na konzolu se vypise jmeno a prijmeni

    	//dalsi cyklus nacita znamky
		for(int i=konec_jm+1;i<delka;i++){ //zacina tam, kde skoncil predchozi cyklus 
										   //(za koncem jmena)a pokracuje do konce radku

			if(radek[i]==' '){
				continue;     //pokud narazi na mezeru mezi znamkami, pokracuje
			} 

			if(radek[i]=='|'){
				oddelovac=i; //pokud ale narazi na oddelovac ("|"), nastavi promenne oddelovac
				break;		 //konecnou pozici a dale uz nepokracuje
			}
			else{
				znamky+=int(radek[i])-48;
				poc_zn++;
			}
		}

		//nasledujici cyklus nacita znamky z projektu

		for(int i=oddelovac+1;i<delka;i++){ //opet zacina tam, kde skoncil predchozi cyklus
											//tzn. za oddelovacem

			if(radek[i]==' '){
				continue;	//pokud narazi na mezeru mezi znamkami, pokracuje
			}

			else{
				projekty+=int(radek[i])-48;
				poc_pr++;}
		}

		//dale program rozhodne, zda zak uspel 
		if(poc_pr<3){
			cout<<"  neprospel/a"<<endl; //pokud ma zak mene nec 3 projekty, potom neprospel
		}
		else{
			if(poc_zn<3){ //pokud ma zak mene nez 3 bezne znamky, potom je neklasifikovan
				cout<<"  neklasifikovan/a"<<endl;
			}
			else{
				double prumer=(znamky+projekty*2.0)/(poc_zn+poc_pr*2.0); //pokud uspel v obojim,
				cout << "  " << prumer << endl;	//muze se vypocitat prumer a vypsat se
			}
		}
	//nastaveni promennych na deafultni hodnoty (0), pro pouziti v dalsim radku
	poc_zn=0;
	znamky=0;
	projekty=0;
	poc_pr=0;
	}

cout << "==========================================" << endl;
system("PAUSE");
}

potřeboval bych ale vysvětlit toto: 

			else{
				znamky+=int(radek[i])-48;
				poc_zn++;
			}

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý