Vypis ze struktury – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vypis ze struktury – C / C++ – Fórum – Programujte.comVypis ze struktury – C / C++ – Fórum – Programujte.com

 

5. 11. 2011   #1
-
0
-

Mohl by mi nekdo vysvetlit, proc se misto vypsani polozek z vytvorene struktury, vypisou nejake pravdepodobne nahodne cisla? Kdyz dam prikaz cout << z[i].jmeno << " " << z[i].vek << " " << z[i].druh_prace << "\n"; primo do cyklu kde uzivatel zadava nove polozky struktury, tak neni zadny problem a vse se vypise jak ma, prekldac nevyhazuje ani zadny warning, fakt nevim ...

#include <iostream>
using namespace std;

struct zamestnanec
{
char jmeno[20];
short vek;
char druh_prace[25];
};

int main()
{
    int i=0,pocet_zam;
    char novy_zamestnanec = 'a';
   
    zamestnanec z[100];
   
    while(novy_zamestnanec == 'a')
    {
    cout << "chcete pridat noveho zamestnance a/n : ";
    cin >> novy_zamestnanec;
    cin.get();
     
       if (novy_zamestnanec == 'a')
       {
       zamestnanec z[i];      
       cout << "zadejte jmeno : ";
       cin.get(z[i].jmeno,20);
       cin.get();
       cout << "zadejte vek : ";
       cin >> z[i].vek;
       cin.get();
       cout << "zadejte druh prace : ";
       cin.get(z[i].druh_prace,25);
       cin.get();
       cout << "\n";
       i++;
       }
    }   
    pocet_zam = i;
   
    for(i=0;i<pocet_zam;i++)
       cout << z[i].jmeno << " " << z[i].vek << " " << z[i].druh_prace << "\n";
   
   
    cin.get();
    cin.get();
    return 0;
}

Nahlásit jako SPAM
IP: 212.111.4.–
KIIV
~ Moderátor
+43
God of flame
5. 11. 2011   #2
-
0
-

co je toto:  zamestnanec z[i]; ??   zda se jako bys to prekryl jinou promennou stejneho nazvu a pak se divil ze ti to v puvodni nic nezobrazi

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
5. 11. 2011   #3
-
0
-

#2 KIIV
mel jsem za to, ze tim si vytvorim polozku v poli struktur, ve kterem mam databazi zamestnancu

Nahlásit jako SPAM
IP: 212.111.4.–
KIIV
~ Moderátor
+43
God of flame
5. 11. 2011   #4
-
0
-

to uz si udelal pred tim pomoci:   zamestnanec z[100];

musis to akorat idealne vynulovat... no kazdopadne se divim ze to zkompiluje...

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
5. 11. 2011   #5
-
0
-

#4 KIIV
nj, kdyz to odmaznu tak to jede :D, jestli uz tomu dobre rozumim, tak vlastne mam vse vytvoreno jiz pri vytvoreni pole, pak uz to jen staci naplnit nejakymi daty, je tak? Dekuju za radu :)

Nahlásit jako SPAM
IP: 212.111.4.–
KIIV
~ Moderátor
+43
God of flame
5. 11. 2011   #6
-
0
-

no misto je vyhrazene... samozrejme neni zaruceno ze tam nebude smeti... o to se musis postarat sam

Jine je to s dynamickou pameti.. ale tu tady nepouzivas takze neni problem

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
5. 11. 2011   #7
-
0
-

#6 KIIV
jasne, takze nejlepe hned po vytvoreni vse jednim cyklem vynulovat, v serialu C++ je v ukolu u lekce 5 zadane aby se vse vypsalo v tabulce, ale vytvorit tabulku za pomoci \t atd. mi prijde mnohem tezsi nez samotny program, tak to asi vynecham :/, jednotlive bunky se mi zkracovaly kdyz jsem zadal treba jednopismene jmeno, takze to nevypadalo moc pekne, tak me napadlo ze bych si kazdy radek ve vypisovacim cyklu vzdycky prvni "narysoval", ale pak mi doslo ze zase nevim jak rict programu aby napr. druhou polozku zacal vypisovat az za dalsim znakem "|", nejaka rada? nebo je muj pocit, ze tohle neni zrovna nejak zvlast dulezite, je spravny :) ?

Nahlásit jako SPAM
IP: 212.111.4.–
Matrix17
~ Anonymní uživatel
300 příspěvků
6. 11. 2011   #8
-
0
-

Důležitý nebo ne, jde o to se něco naučit. Kdybys to dělal pro zákazníka, ta¨k mu taky nemůžeš říct, hele to co chceš není důležitý, tak to neudělám. :)))

Jinak s tím vypisováním, prvně si vypíšeš znak | a pak vypíšeš položku. Žádná velká věda. ;) Ale pokud si chceš prvně nakreslit čáry a pak tam vypisovat, tak by sis na sebe upletl hodně velkej bič. Stačí když si zjistíš "délku" každý položky. Tj. počet znaků tý položky a pak jen upravuješ počet mezer aby to sedělo do tabulky.

Nahlásit jako SPAM
IP: 213.226.237.–
6. 11. 2011   #9
-
0
-

#8 Matrix17

Samozrejme ze pro zakaznika bych to musel nejak udelat, spis jsem mel na mysli, ze se dnes vsechno dela jako windows aplikace, proto nejake vytvareni dosovske tabulky stejne asi nikdy nebudu delat, to je jen moje domnenka pokud je spatne, tak me klidne poucte :)

V kazdem pripade jsem to ted vyresil podle tve rady, takze dekuju, ale stejne mi to prijde trosku na dlouhe lokte, sice mi to trvalo asi 20 minut ale kod je delsi nez samotny program :), to je ale asi tim, ze toho ten hlavni program moc neumi :), kdyby byl nejaky napad na optimalizaci, rad se priucim, ucim se programovat par dnu, takze mi urcite unika spousta vychytavek i u trivialnich veci

#include <iostream>
using namespace std;

struct zamestnanec
{
char jmeno[20];
short vek;
char druh_prace[25];
};

int main()
{
    int i=0,j=0,pocet_zam,max_zam,delka_jmena,delka_veku,n,delka_prace;
    char novy_zamestnanec = 'a';
   
    cout << "zadejte pocet zamestnancu : ";
    cin >> max_zam;
   
    zamestnanec z[max_zam];
   
    while((novy_zamestnanec == 'a') && (i != max_zam))
    {
    cout << "chcete zadat dalsiho zamestnance a/n : ";
    cin >> novy_zamestnanec;
    cin.get();
          if (novy_zamestnanec == 'a')
          {      
          cout << "zadejte jmeno : ";
          cin.get(z[i].jmeno,20);
          cin.get();
          cout << "zadejte vek : ";
          cin >> z[i].vek;
          cin.get();
          cout << "zadejte druh prace : ";
          cin.get(z[i].druh_prace,25);
          cin.get();
          cout << "\n";
          i++;
          }
    }   
    pocet_zam = i;
   
    cout << " __________________________________________________________\n";
    for(i=0;i<pocet_zam;i++)
       {
       delka_jmena = 20 - strlen(z[i].jmeno);                                   // vypis bunky jmena s doplnenim mezer
       cout << " | " << z[i].jmeno;
       for(j=0;j<delka_jmena;j++)
       cout << " ";
      
       delka_veku = z[i].vek;                                                   // vypis bunky veku s dpolnenim mezer
       n = 0;
       while(delka_veku > 0)
          {
          delka_veku /= 10;
          n++;
          }
       delka_veku = 3 - n;
       cout << " | " << z[i].vek;
       for(j=0;j<delka_veku;j++)
          cout << " ";
      
       delka_prace = 25 - strlen(z[i].druh_prace);                              // vypis bunky druhu prace s doplnenim mezer
       cout << " | " << z[i].druh_prace;
       for(j=0;j<delka_prace;j++)
          cout << " ";
       cout << " |\n";
       cout << " __________________________________________________________\n";
       }
      
    cin.get();
    cin.get();
    return 0;
}

Nahlásit jako SPAM
IP: 212.111.4.–
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, 11 hostů

Podobná vlákna

Struktury — založil Samuel Lehotský

Struktury — založil RePRO

Struktury — založil Matěj Andrle

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ý