Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 13 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.09
Prihlásený: 20.12.18
Príspevky: 63
Témy: 23
Bydlisko: Kráľovce pr...
Príspevok NapísalOffline : 21.12.2014 19:49

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;
}


Offline

Správca fóra
Správca fóra
Polia

Registrovaný: 08.08.09
Príspevky: 12449
Témy: 39
Príspevok NapísalOffline : 21.12.2014 20:07

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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 21.12.2014 20:41

Prípadne, ak to má byť naozaj C++, tak tam môže použiť možnosti, ktoré pri poliach ponúka C++. :)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.09
Prihlásený: 20.12.18
Príspevky: 63
Témy: 23
Bydlisko: Kráľovce pr...
Príspevok Napísal autor témyOffline : 23.12.2014 11:14

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 :)


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 23.12.2014 12:23

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ť).


Offline

Správca fóra
Správca fóra
Polia

Registrovaný: 08.08.09
Príspevky: 12449
Témy: 39
Príspevok NapísalOffline : 23.12.2014 14:22

Nemôže na to použiť iterátor v spojení s tou podmienkou cisla[i] > 0?







_________________
always is always wrong
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.09
Prihlásený: 20.12.18
Príspevky: 63
Témy: 23
Bydlisko: Kráľovce pr...
Príspevok Napísal autor témyOffline : 23.12.2014 16:37

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 :)


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 23.12.2014 17:14

Teraz si do toho poľa na koniec pridaj jednu nulu a uvidíš, že ti to nefunguje. :)


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.09
Prihlásený: 20.12.18
Príspevky: 63
Témy: 23
Bydlisko: Kráľovce pr...
Príspevok Napísal autor témyOffline : 24.12.2014 10:25

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;
}


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 24.12.2014 10:59

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!
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 24.12.2014 11:11

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;
}


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 30.09.09
Prihlásený: 20.12.18
Príspevky: 63
Témy: 23
Bydlisko: Kráľovce pr...
Príspevok Napísal autor témyOffline : 29.12.2014 12:25

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;




Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 29.12.2014 13:24

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)


Odpovedať na tému [ Príspevkov: 13 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Polia

v Delphi, Visual Basic

2

679

03.05.2009 14:59

ricco24 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. c++polia

v Assembler, C, C++, Pascal, Java

3

518

10.07.2014 12:56

marian_r Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. viacrozmerne polia

v PHP, ASP

4

696

04.08.2009 18:39

pilná lama glama Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Objekty ako polia

v PHP, ASP

7

689

03.01.2010 12:49

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. polia postupnosti pascal

v Assembler, C, C++, Pascal, Java

6

1187

01.05.2007 20:40

audiotrack Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Polia , príkaz foreach

v PHP, ASP

4

866

30.12.2011 11:51

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vyber prvkov - POLIA

v PHP, ASP

5

496

23.04.2010 10:48

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Dropdown - schova polia

v JavaScript, VBScript, Ajax

3

381

14.01.2013 18:47

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. dve polia & foreach

v PHP, ASP

8

683

08.07.2009 16:03

Snacker Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. 2rozmerne polia v jave

v Assembler, C, C++, Pascal, Java

8

607

29.03.2015 9:37

Lessik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Polia - lazarus programovanie pomoooc

v Delphi, Visual Basic

3

747

28.11.2012 14:00

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP... konk.: arrays (polia)

v PHP, ASP

2

602

11.03.2007 19:46

qacer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. objekty a polia v SESSION

v PHP, ASP

2

514

24.08.2009 10:15

tomast7 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ polia a funkcie problém

v Assembler, C, C++, Pascal, Java

1

565

12.08.2012 23:18

nBXXL Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Polia z PHP do Jquery

[ Choď na stránku:Choď na stránku: 1, 2 ]

v JavaScript, VBScript, Ajax

33

1864

20.02.2011 12:02

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nevyberie všetky zhodne polia z MySQL

v PHP, ASP

5

295

21.08.2014 14:51

arno Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra