Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
Autor | Správa |
---|
Registrovaný: 30.09.09 Prihlásený: 20.12.18 Príspevky: 63 Témy: 23 | 23 Bydlisko: Kráľovce pr... |
Ahojte. S C++ len zacinam a potreboval by som urobit vypis pola. Podmienkou je vsak aby na vystupe som dostal len nenulove hodnoty pola. Hodnoty v poli sa budu menit. Skusal som vselico a nic nefungovalo. Dakujem. Kód: #include <iostream> using namespace std; int main(void) { int x; int cisla[] = {2, 0, 3, 0, 4, 6};
for (int i=0; i<6; i++) cout << cisla[i] << ", ";
cin >> x; return 0; }
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | 39 |
Pred výpis prvku poľa si daj podmienku, či je hodnota cisla[i] rôzna od nuly. V cykle odporúčam namiesto napevno definovaného počtu iterácií používať sizeof(cisla) / sizeof(*cisla) - program si sám zistí počet prvkov, porozmýšľaj prečo?
_________________ always is always wrong |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Prípadne, ak to má byť naozaj C++, tak tam môže použiť možnosti, ktoré pri poliach ponúka C++.
|
|
Registrovaný: 30.09.09 Prihlásený: 20.12.18 Príspevky: 63 Témy: 23 | 23 Bydlisko: Kráľovce pr... |
Dakujem za rady. Kod som upravil takto: Kód: #include <iostream> using namespace std; const int Max = 6; int main(void)
{ int x; int cisla[Max] = {2, 0, 3, 0, 4, 6};
for (int i=0; i<Max; i++) if (cisla[i]>0) cout << cisla[i] << ", ";
cin >> x; return 0; }
Asi to nie je celkom "košer", ale funguje to. Este by som potreboval odstranit poslednu ciarku po vypise hodnot pola. Neviete ako na to? Pekne Vianoce vsetkym
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Budeš si musieť urobiť premennú, do ktorej si uložíš informáciu o tom, či si už vypísal nejaké číslo. Ak bude tá premenná nastavená, tak najskôr vypíšeš čiarku a až potom nové číslo (takže pred prvým číslom tam čiarku nebudeš mať).
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | 39 |
Nemôže na to použiť iterátor v spojení s tou podmienkou cisla[i] > 0?
_________________ always is always wrong |
|
Registrovaný: 30.09.09 Prihlásený: 20.12.18 Príspevky: 63 Témy: 23 | 23 Bydlisko: Kráľovce pr... |
Vyriesil som to takto: Kód: #include <iostream> using namespace std; const int Max = 6; int main(void)
{ int x; int ciarka = 1; int cisla[Max] = {2, 0, 3, 0, 4, 6};
for (int i=0; i<Max; i++) if (cisla[i]>0) { cout << cisla[i]; ciarka += 1; if (ciarka == Max - 1) cout << ""; else cout << ", "; } cin >> x; return 0; }
V druhej podmienke na vystupe su prazdne uvodzovky. Tam je mozne napisat akykolvek znak pre oznacenie konca vypisu/vety. Dakujem za podnetne komentare
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Teraz si do toho poľa na koniec pridaj jednu nulu a uvidíš, že ti to nefunguje.
|
|
Registrovaný: 30.09.09 Prihlásený: 20.12.18 Príspevky: 63 Témy: 23 | 23 Bydlisko: Kráľovce pr... |
Skusil som vselico, no nic nefungovalo. Najrozumnejsie sa mi zda, ze by bolo vhodne kontrolovat posledny prvok pola. Ak bude nulovy, tak tento fakt zahrnut do podmienky. Urobil som to, ale nefunguje to podla mojich predstav. Akym smerom uvazovat? Prikladam aj nefunkcny kod: Kód: #include <iostream> using namespace std; const int Max = 6; int main(void)
{ int x, nula; int ciarka = 1; int cisla[Max] = {2, 0, 3, 0, 4, 0}; for (int i=0; i<Max; i++) if (cisla[i]!=0) { ciarka += 1; nula = cisla[Max -1]; cout << cisla[i]; if (ciarka == Max - 1 && nula == 0) cout << ""; else cout << ", "; }
cin >> x; return 0; }
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 | Napísal BX: 24.12.2014 10:59 | Polia | |
|
Ak nemôžeš čiarku vypísať hneď po čísle (pretože nevieš, či na konci nebudú nuly), tak holt musíš čiarku vypísať pred číslom Takže uvažuj takýmto smerom Kód: cout << cisla[0]; for (int i = 1; i < Max; i++) { if (cisla[i] != 0) { cout << ", " << cisla[i]; } } (samozrejme ešte musíš zobrať do úvahy, že prvý prvok bude nula, alebo bude pole prázdne)
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
Kód: #include <iostream> using namespace std; const int Max = 9; int main(void)
{ int x; int cisla[Max] = {0, 0, 2, 0, 3, 0, 4, 0, 0}; bool prve_cislo = true; for (int i=0; i<Max; i++) { if (cisla[i]!=0) { if (!prve_cislo) cout << ", ";
cout << cisla[i]; prve_cislo = false; }
}
if (!prve_cislo) cout << endl;
cin >> x; return 0; }
|
|
Registrovaný: 30.09.09 Prihlásený: 20.12.18 Príspevky: 63 Témy: 23 | 23 Bydlisko: Kráľovce pr... |
Chromo, dakujem za kod. Ja som nad tym uvazoval a skusal som najst aj ine riesenie (podla poznamky BX). Asi to nie je take elegantne ako tvoje, ale som rad, ze som ho napisal sam. Kód: #include <iostream> using namespace std; const int Max = 6; int main(void) { int x, nula; int ciarka = 1; int cisla[Max] = {0, 2, 7, 6, 4, 0}; for (int i=0; i<Max; i++) if (cisla[i]!=0) { ciarka += 1; if (ciarka == 2) { cout << cisla[i]; } else if (ciarka > 1) { cout << ", "; cout << cisla[i]; } } cout << " :-)"; cin >> x; return 0; }
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
To if za else je zbytočné, pretože tá časť môže nastať len ak nie je ciarka rovná 2, čo je, v tomto konkrétnom prípade vždy, keď neplatí to prvé if. (a teda je to v podstate to isté, ako som napísal ja)
|
|
Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Delphi, Visual Basic | 2 | 720 | 03.05.2009 14:59 ricco24 | | v PHP, ASP | 4 | 718 | 04.08.2009 18:39 pilná lama glama | | v Assembler, C, C++, Pascal, Java | 3 | 568 | 10.07.2014 12:56 marian_r | | v PHP, ASP | 5 | 524 | 23.04.2010 10:48 stenley | | v JavaScript, VBScript, Ajax | 3 | 409 | 14.01.2013 18:47 shaggy | | v PHP, ASP | 7 | 716 | 03.01.2010 12:49 stenley | | v Assembler, C, C++, Pascal, Java | 6 | 1218 | 01.05.2007 20:40 audiotrack | | v PHP, ASP | 4 | 894 | 30.12.2011 11:51 shaggy | | v PHP, ASP | 2 | 622 | 11.03.2007 19:46 qacer | | v PHP, ASP | 8 | 723 | 08.07.2009 16:03 Snacker | | v Assembler, C, C++, Pascal, Java | 8 | 676 | 29.03.2015 9:37 Lessik | | v Delphi, Visual Basic | 3 | 780 | 28.11.2012 14:00 BX | | v Assembler, C, C++, Pascal, Java | 1 | 608 | 12.08.2012 23:18 nBXXL | | [ Choď na stránku: 1, 2 ] v JavaScript, VBScript, Ajax | 33 | 1923 | 20.02.2011 12:02 Ďuri | | v PHP, ASP | 2 | 535 | 24.08.2009 10:15 tomast7 | | v PHP, ASP | 5 | 317 | 21.08.2014 14:51 arno |
|