[ 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 | 23
Bydlisko: Kráľovce pr...
NapísalOffline : 21.12.2014 19:49 | Polia

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 | 39
NapísalOffline : 21.12.2014 20:07 | Polia

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 | 0
NapísalOffline : 21.12.2014 20:41 | Polia

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 | 23
Bydlisko: Kráľovce pr...
Napísal autor témyOffline : 23.12.2014 11:14 | Polia

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 | 0
NapísalOffline : 23.12.2014 12:23 | Polia

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 | 39
NapísalOffline : 23.12.2014 14:22 | Polia

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 | 23
Bydlisko: Kráľovce pr...
Napísal autor témyOffline : 23.12.2014 16:37 | Polia

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 | 0
NapísalOffline : 23.12.2014 17:14 | Polia

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 | 23
Bydlisko: Kráľovce pr...
Napísal autor témyOffline : 24.12.2014 10:25 | Polia

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 | 3
NapísalOffline : 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!
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 | 0
NapísalOffline : 24.12.2014 11:11 | Polia

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 | 23
Bydlisko: Kráľovce pr...
Napísal autor témyOffline : 29.12.2014 12:25 | Polia

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 | 0
NapísalOffline : 29.12.2014 13:24 | Polia

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)


 [ Príspevkov: 13 ] 


Polia



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

720

03.05.2009 14:59

ricco24

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

viacrozmerne polia

v PHP, ASP

4

718

04.08.2009 18:39

pilná lama glama

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

c++polia

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

3

568

10.07.2014 12:56

marian_r

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

vyber prvkov - POLIA

v PHP, ASP

5

524

23.04.2010 10:48

stenley

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

Dropdown - schova polia

v JavaScript, VBScript, Ajax

3

409

14.01.2013 18:47

shaggy

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

Objekty ako polia

v PHP, ASP

7

716

03.01.2010 12:49

stenley

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

polia postupnosti pascal

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

6

1218

01.05.2007 20:40

audiotrack

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

Polia , príkaz foreach

v PHP, ASP

4

894

30.12.2011 11:51

shaggy

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

PHP... konk.: arrays (polia)

v PHP, ASP

2

622

11.03.2007 19:46

qacer

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

dve polia & foreach

v PHP, ASP

8

723

08.07.2009 16:03

Snacker

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

2rozmerne polia v jave

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

8

676

29.03.2015 9:37

Lessik

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

Polia - lazarus programovanie pomoooc

v Delphi, Visual Basic

3

780

28.11.2012 14:00

BX

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

608

12.08.2012 23:18

nBXXL

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

1923

20.02.2011 12:02

Ďuri

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

objekty a polia v SESSION

v PHP, ASP

2

535

24.08.2009 10:15

tomast7

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

Nevyberie všetky zhodne polia z MySQL

v PHP, ASP

5

317

21.08.2014 14:51

arno



© 2005 - 2024 PCforum, edited by JanoF