Poraďte s malým problémem – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Poraďte s malým problémem – C / C++ – Fórum – Programujte.comPoraďte s malým problémem – C / C++ – Fórum – Programujte.com

 

Jakub
~ Anonymní uživatel
905 příspěvků
20. 10. 2012   #1
-
0
-

Zdravím dneska jsem se začal učit v c++, dělám to podle jednoho tutoriálu a vždycky na konci každé lekce jsou úkoly...

Bohužel u jednoho úkolu jsem se seknul a potřeboval bych poradit.

Zadání je :

Napište funkci, která bude dělit. Ošetřete případ kdy se dělí nulou. V takovém případě vraťte hodnotu -1 a vypište upozornění: "Nulou nelze dělit".

Stačilo by mi, kdyby jste tu někdo napsal řešení a já už si potom zjistím kde jsem udělal chybu.

Určitě je to hodně primitivní, ale já to bohužel nějak nemůžu vyřešit...

Za radu předem děkuji.

Nahlásit jako SPAM
IP: 90.176.44.–
crazy
~ Moderátor
+10
Grafoman
20. 10. 2012   #2
-
0
-

#1 Jakub

double deleni( double citatel, double jmenovatel )
{
	if( jmenovatel == 0 ) 
	{
		std::cerr << "Nulou nelze delit" << std::endl;
		return -1;
	}
	return citatel/jmenovatel;	
}
Nahlásit jako SPAM
IP: 147.32.31.–
All you need is vision and time.
vitamin+8
Grafoman
20. 10. 2012   #3
-
0
-

Alebo vseobecnejsie     : 

template <typename T1, typename T2>
inline auto delenie(const T1 &a, const T2 &b) -> decltype(a/b){
	if(b == 0){
		std::cerr << "Nulou nelze delit" << std::endl;
		return -1;
	}
	return a/b;
}
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Jakub
~ Anonymní uživatel
905 příspěvků
20. 10. 2012   #4
-
0
-

Díky za rady pomohlo mi to.... Bohužel mám tady další problém, který bych potřeboval vyřešit.

zadání je: 

Napište program, který se zeptá na jméno, příjmení a věk a údaje uloží do souboru. Použijte při tvorbě tohoto programu struktůry a procedůry.
Rozšiřte tento program, tak aby se na začátku zeptal kolik lidí chce uživatel zadat. Podle počtu se bude dotazovat a bude postupně ukládat. Na konci programu se soubor přečte a data se vypíší na obrazovku. 

Tohle je můj zdroják:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;            
      typedef struct{
        string jmeno, prijmeni;
        int vek, pocet; } TUdaje ;
        
 void zapis()
      { 
             
     TUdaje clovek;
     cout <<"zadejte jmeno: ";
     cin >> clovek.jmeno;
     cout <<"zadejte prijmeni: ";
     cin >> clovek.prijmeni;
     cout <<"zadejte vek: ";
     cin >> clovek.vek;
     
     
     
     ofstream soubor1;
     soubor1.open ("test.txt", ios::out);
     soubor1 << clovek.jmeno << endl << clovek.prijmeni<< endl << clovek.vek;
     soubor1.close();
     }
                  

 int main ()
{    TUdaje lide;
     cout << "kolik lidi chcete zapsat?" << endl;
     cin >> lide.pocet;
     
     for (int i=0; i<=lide.pocet; i++)
     {
         zapis();
         }
      
   
return 0 ;
}

Můj problém je v tom že se mi ty texťáky přepisují a tak zůstanou v tom texťáku jen udaje od posledního člověka...

Nahlásit jako SPAM
IP: 90.176.44.–
vitamin+8
Grafoman
20. 10. 2012   #5
-
0
-

   

soubor1.open ("test.txt", ios::out | ios::app);

edit:

v c++ uz nemusis definovat struktury takto:

typedef struct {} meno;

//mozes takto:

struct meno{};

v strukture TUdaje je premenna 'pocet' zbitocna, na to ti staci lokalna premenna mimo struktury.

Cyklus ktori vola funkciu zapis() prebehne vzdy o 1 krat viac ako by mal.

Neoverujes ci uzivatel zadal spravne hodnototy, kludne moze zadat text ked sa pytas na cisla. (mozes to testovat cez cin.good()), tak isto netestujes ci sa podarilo otvorit subor.

Subor do ktoreho zapisujes by bolo lepsie otvorit v maine a do funkcie ho predavat ako parameter (pointer alebo referencia), ale nie je to nutne.

edit2:

Pri zapisovani do suboru nepotrebujes pouzivat strukturu TUdaje, ta sa zide az pri nacitavani zo suboru.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Jakub
~ Anonymní uživatel
905 příspěvků
20. 10. 2012   #6
-
0
-

#5 vitamin
Díky mockrát za rady...

Pravda je to málo doladěné pokusím se to ještě ošetřit...

Nahlásit jako SPAM
IP: 90.176.44.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Poradte — založil dalaman

Poradte — založil Jonxix

VŠ- poradte — založil fixxa

Poradte mi prosím... — založil Majox

PLS Poradte — založil Pacik

Moderátoři diskuze

 

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