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

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

 

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

Jonasberg
C / C++ › Předávání parametrů mezi tří…
2. 5. 2013   #175677

#2 KIIV
Jak říkám jsem jen oběktově začínající, možná se ptám na blbosti. Nevím, že to není možné.

Sestavil jsem totiž program, který mám tak na 1000 řádek, je celej napsán ve funkcích, bez žádných tříd. Rád bych se to naučil psát objektově, všichni říkaj, že se dnes jinak neprogramuje, já tedy nevím proč, protože na těch 1000 řádcích nemám jedinou třídu a fachá to   .

Ale chtěl bych se to naučit objektově (no jen proto, abych trochu vypadal že žiju v tomhle století   ), mám na to spoustu knih, ale jsem na to sám a žádná mi nevyhovuje (protože to je psaný pro větší kapacity).

Nevěděl bys o něčem, z čeho by se dobře učilo??

Nemám rád, když je v knize napsán jen část kódu (než to rozběhám, strávím nad tím týden).

Díky

Jonasberg
C / C++ › Předávání parametrů mezi tří…
2. 5. 2013   #175674

Ahoj.

Možná že se ptám na úplnou blbost, nevím, nejsem programátor. Ňákej ten rok programuju samostatně jen tak ze srandy, spíše jen přes funkce (procedurálně). Včera jsem začal s objekty, mohl by mi prosím někdo poradit?

Pokud předávám parametry mezi funkcemi, to je mi jasné (přes return, nebo pointery). Pokud předávám parametry v rámci jedné třídy - je to úplně stejné. Ale pokud předávám mezi třídami, jak na to?? Přes pointery??

Můžete mi prosím poradit??  

Popis kódu:

Pokud budu ve třídě Data, nemám problém. Načtu a , vytisknu a. Ale pokud proměnnou a potřebuju dostat ven ze třídy Data do třídy Results mám problém.

Jestli mi někdo s touhle banalitou dokáže poradit, budu rád.

Díky

#include <iostream>
using namespace std;

class Data
{
public:
  int a, b;
  int nacti_data() { 
    cout << "a = ";
    cin >> a;
  }
  void tiskni_data() {
    cout << "\na = " << a;
  }
};

class Results : public Data
{
public:      
  void tiskni_data(){
    cout << "\na = " << a;
  }  
};

int main()
{  
    Data a;
    a.nacti_data();
    a.tiskni_data();
    Results b;
    b.tiskni_data();
    
    return 0;
}
Jonasberg
C / C++ › nefunguje podmínka if při na…
2. 5. 2013   #175673

Jo díky moc.

Jonasberg
C / C++ › nefunguje podmínka if při na…
28. 4. 2013   #175541

Prosil bych o radu:

Vůbec nechápu proč to nefunguje.

Sestavil jsem si takový prográmek, který mi rozháže slova v textu tak, že dá každé slovo na nový řádek. Koncipoval jsem program pro německá slova, podst. jména mají členy der/die/das.  Mělo by to fungovat tak, že pokud je tam člen mělo by být slovo i se členem na jednom řádku.

Posílám tedy kód programu - mužský rod funguje (der), ten jsem pro zjednodušení problematiky vymazal, ten mi funguje.

Střední rod funguje (das), je zde obsažen.

Ženký rod mi nefunguje (die) a nevím proč.

Popis programu:

Program načítá znaky - řádka :   while((zn=getc(sb)) != EOF)

Pokud je zn == nejaký znak - vytiskne ten znak

Pokud je zn == '  ' (mezera) a zároveň pokud je MEZERA == NE, pak odskočí na nový řádek

MEZERA = ANO je tehdy pokud se jedná o mezeru mezi členem a podst. jménem. Pak program udělá pouze mezeru a neodskakuje.

Tato MEZERA = ANO je definována jako:

- program projde prvním cyklem while a někde dole je podmínka if(zn=='d') prvni = zn; pokud je splněna, program si   pamatuje "d"

- ve druhem cyklu narazí na podmínku if(prvni=='d' && (zn=='e' || zn=='i' || zn=='a')) druhy = zn;  - pokud je splněna pamatuje si např. "a"

- ve třetím cyklu narazí na podmínku if(prvni=='d' && druhy=='a' && zn=='s')  treti = zn;  - pokud je splněna pamatuje si "s" - jedná se o střední rod, je to tedy člen a MEZERA = ANO.

Je zajímavé, že je zde úplně stejná podmínka pro die a to nefunguje, princip je úplně stejný. Jestli víte proč, budu rád  

Ještě přikládám obsah souboru slovicka.txt, které program vyžaduje:

lehrnen das Buch lehrnen
das Auto
die Schule
das Auto

Pokud to uložíte do txt. souboru a spustíte, zjistíte že das Auto napíše na jednu řádku a die Schule ne ???

Díky

#include<stdio.h>
#include <string.h>

main() // Pocitani slov, radek a znaku v souboru 1_11.txt
{
 typedef int BOOL;
 const BOOL ANO = 1,NE = 0;      // Definice logickych konstant
 BOOL mezera;                    // Zajistuje aby mezera mezi 2 sloupci
                                 // byla nacitana pouze 1x
 FILE *sb=fopen("slovicka.txt","r"); // Otevreni souboru 1_11.txt
 
 int rd ,sl;                 // rd - radek, sl - sloupec, zn - znak
 char zn, prvni, druhy, treti;
 
 mezera = NE;
 
 while((zn=getc(sb)) != EOF)     // dokud neskonci soubor, nacita znaky
   {
   if(prvni=='d' && druhy=='a' && zn=='s') // -- podminka pro 3. znak --                 
     treti = zn;                           // stredni rod
   if(prvni=='d' && druhy=='i' && zn=='e') // -- podminka pro 3. znak --                 
     treti = zn;                           // zensky rod - nefunguje ??
   
   
   if(prvni=='d' && (zn=='e' || zn=='i' || zn=='a'))                  
     druhy = zn;                           // -- podminka pro 2. znak --
                          
   
   if(zn==' '){           // pise mezeru pokud je splnena podm s/z rodu.
     if (prvni=='d' && druhy=='a' && treti=='s') mezera = ANO;
     if (prvni=='d' && druhy=='i' && treti=='e') mezera = ANO;
     
  
     if (mezera == ANO){
       printf(" ");
       prvni = ' ';
       druhy = ' ';
       treti = ' ';
       mezera = NE;
     }   
      
     else {             // pokud mezera mezi slovy, skoci na novy radek
       printf("\n");
     }   
   }  
   else 
     printf("%c", zn);  
   
   if(zn=='d')
     prvni = zn;                     // -- podminka pro 1. znak --
  }
     
  fclose(sb);
  if ((sb = fopen("slovicka.txt", "r")) == NULL) {
    fprintf(stderr, "Chyba cteni souboru %s\n", "1_11.txt");
  }
}  
Jonasberg
C / C++ › Podmínka If C++
3. 4. 2013   #174366

Díky moc.

Tak to jste mně zachránili. 

Jonasberg
C / C++ › Podmínka If C++
3. 4. 2013   #174358

Ahoj, mám tu celkem primitivní problém 

Vyhodnocuji-li podmínku if, někdy mi podmínka vyhoví a jindy ne a nevím proč.

Podminka mi vyhodnocuje zda je rozdil roven 0,2.

Pokud zadam a = 0,2 , b = 0, rozdil je 0,2 a podminka je splnena

Pokud zadam a = 2,1 , b = 1,9 , rozdil je taky 0,2 a podminka splnena neni???? A nevim proč.

Mockrát děkuji za radu.

#include <iostream>

double a, b, delta, rozdil;
using namespace std;
int pomer;

int main()
{
  a = 0.2;
  b = 0;
    
  delta = 0.2;
  rozdil = (a - b);
  
  cout << endl << "Pred prikazem IF - Rozdil je : " << rozdil << endl;
    
  if (rozdil == delta){
    cout << "PODMINKA IF SE SPLNI - Rozdil je " << rozdil << endl;
    }
    
//-------- OPAKUJI KOD, JEN ZMENIM a A b ----------------------

  a = 2.1;
  b = 1.9;
    
  delta = 0.2;
  rozdil = (a - b);
  
  cout << endl << "Pred prikazem IF - Rozdil je : " << rozdil << endl;
    
  if (rozdil == delta){
    cout << "PODMINKA IF SE SPLNI - Rozdil je " << rozdil << endl;
    }  
}

 

 

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