pole v c ++

Programovacie jazyky, rady, poradňa...
lojzo.112
Medium Expert
Medium Expert
Príspevky: 97
Registrovaný: 21 feb 2006, 14:36

pole v c ++

Príspevok od používateľa lojzo.112 »

Nazdar poradi mi niekto ako vytvorit pole do ktoreho mam dat max 20 znakov , ktore potom budem prehladavat a mam najst samohlasky so zadaneho pola...a spocitat ich ... thx
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

Kód: Vybrať všetko

char pole[21];
:)
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

pole vytvoris: char pole[20] - teda pole s 20 znakmi typu char (pismenami)
Potom ho naplnis pismenami (to neviem ako chces)
Potom das zase cyklus for ktory prebehne 20 krat a vzdy skontrolujes if(pole=a) || (pole=e) atd... a vypises...
Teda neviem ako chces naplnit to pole :?

neutronmind: char pole[21] je pre 22 prvkov nie? Polia sa pocitaju od nuly a teda cislo 21 je 22. prvok. Alebo nie? :D
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

Nie, je to 21 prvkov, ktore sa indexuju od 0 do 20. :) 21 preto, ak by ich nacitaval ako retazec, aby bolo miesto pre znak '\0'
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

Len mozno ich ani ako retazec nemusi davat, lebo pokial porovnava len jednotlive znaky, tak staci mat iab pole znakov. Cize pre 20 znkov by malo stacit ;)
lojzo.112
Medium Expert
Medium Expert
Príspevky: 97
Registrovaný: 21 feb 2006, 14:36

Príspevok od používateľa lojzo.112 »

no ide o to ze znaky (20) ma zadat sa m uzivatel
njoko
Light Expert
Light Expert
Príspevky: 50
Registrovaný: 09 okt 2008, 13:32

Príspevok od používateľa njoko »

sak a? ved to budes nacitavat v tom cykle
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

neutronmind: Ano tak som to myslel. od pole[0] do pole[19] je 20 prvkov a pole[20] je null.
lojzo.112
Medium Expert
Medium Expert
Príspevky: 97
Registrovaný: 21 feb 2006, 14:36

Príspevok od používateľa lojzo.112 »

No ja proste neviem na to dojst. take to je zadanie...

Napíšte program. Načítajte reťazec dĺžky max. 20 znakov a vypíšte počet samohlások. Po výpise počtu sa spýtajte na opakovanie operácie. Po zadaní písmena n sa program ukončí, inak si znova vyžiada zadať reťazec a spracuje ho.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

No vyriesil som ti to takto:
Tie podmienky su trochu tazkopadne, pretoze ked som dal if(slovo=='a') || (slovo=='e') atd. napisalo mi chybu "Expected primary-expression befor '||' token"
Neviem co to znamena, prepacte :D Budem rad ak mi to niekto napise.
Kazdopadne riesenie funguje spravne ;)

Kód: Vybrať všetko

char slovo[20];
    
    cout << "Zadaj slovo (max 20 znakov):";
    cin.getline(slovo, 20);
    
    for(int i=0;i<20;i++)
    {
            if (slovo[i]=='a')
             cout << "Samohlaska: " << slovo[i] << endl;
            if (slovo[i]=='e')
             cout << "Samohlaska: " << slovo[i] << endl; 
            if (slovo[i]=='i')
             cout << "Samohlaska: " << slovo[i] << endl;
            if (slovo[i]=='o')
             cout << "Samohlaska: " << slovo[i] << endl;
            if (slovo[i]=='u')
             cout << "Samohlaska: " << slovo[i] << endl;
    }
    
    cin.get();
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Príspevok od používateľa reDo »

chyba je tu ma tam byt if((slovo=='a') || (slovo=='e')) a nie if(slovo=='a') || (slovo=='e') :wink:
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

a este by sa tam dala pridat podmienk, ze ak su tie samohlasky velke:

Kód: Vybrať všetko

if ((slovo[i]>=65)&&(slovo[i]<=90)) slovo[i]+=32;
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

ReDo dakujem, ja som tam hadzal syntax z pascala :lol:
Tak som to zosumarizoval, ale picuque - tu tvoju vec som nepouzil, pretoze by sa bolo treba viac pohrat s podmienkami (pretoze cez moju podm. neprejde nic z tvojej) Musel by som to kontrolovat viacnasobne a to sa mi uz robit nechce :)

Kód: Vybrať všetko

char slovo[20];
   
    cout << "Zadaj slovo (max 20 znakov): ";
    cin.getline(slovo, 20);
   
    for(int i=0;i<20;i++)
    {
            if ((slovo[i]=='a') || (slovo[i]=='e') || (slovo[i]=='i') || (slovo[i]=='o') || (slovo[i]=='u') 
             || (slovo[i]=='A') || (slovo[i]=='E') || (slovo[i]=='I') || (slovo[i]=='O') || (slovo[i]=='U'))
             {
              cout << "Samohlaska: " << slovo[i] << endl;
             }
    }
   
    cin.get();
Vysledok pre lojza :)
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

No myslim, zedacotaketo by fungovalo:

Kód: Vybrať všetko

if ((slovo[i]>=65)&&(slovo[i]<=90)) slovo[i]+=32;
if ((slovo[i]=='a') || (slovo[i]=='e') || (slovo[i]=='i') || (slovo[i]=='o') || (slovo[i]=='u'))
             {
              cout << "Samohlaska: " << slovo[i] << endl;
             } 
Ci toto si myslel tym pohranim sa s podmienkami? :D
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

Do prdele tam ze ma toto nenapadlo :lol: Najprv zmenit pismena na male a potom kontrolovat... hanbim sa :oops:
Darmo dneska tazky den
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

Nezabudajte, ze toto zavisi od znakovej tabulky(ten kod je v poriadku pre ASCII). Cize:

Kód: Vybrať všetko

slovo = tolower(slovo);
if ((slovo[i]=='a') || (slovo[i]=='e') || (slovo[i]=='i') || (slovo[i]=='o') || (slovo[i]=='u')) { 
    cout << "Samohlaska: " << slovo[i] << endl; 
}
lojzo.112
Medium Expert
Medium Expert
Príspevky: 97
Registrovaný: 21 feb 2006, 14:36

Príspevok od používateľa lojzo.112 »

cize toto mi spocita tie samohlasky? lebo vypisat ich netreba....
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

Tak to uz ti je lahke potom nie?

Kód: Vybrať všetko

for(int i=0;i<20;i++)
    {
            if ((slovo[i]>=65)&&(slovo[i]<=90)) slovo[i]+=32;
             if ((slovo[i]=='a') || (slovo[i]=='e') || (slovo[i]=='i') || (slovo[i]=='o') || (slovo[i]=='u'))
             {
              samohl++;
             } 
    }
   
    cout << "Slovo obsahuje " << samohl << " samohlasok";
- mozes to osetrit podmienkami, aby to pisalo gramaticky spravne (2 samohlasky, 1 samohlasku atd.)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Namiesto toho číselného testu by som použil funkciu isalpha a potom kombináciu isupper + tolower. ;) (technicky funkcia isalpha pri použití isupper asi ani ne je potrebná)
lojzo.112
Medium Expert
Medium Expert
Príspevky: 97
Registrovaný: 21 feb 2006, 14:36

Príspevok od používateľa lojzo.112 »

Kód: Vybrať všetko

#include <iostream>
#include<math.h>

using namespace std;

int main (int argc, char *argv[])
{ 
char slovo[20];
   
    cout << "Zadaj slovo (max 20 znakov):";
    cin.getline(slovo, 20);
{
for(int i=0;i<20;i++)
    {
            if ((slovo[i]>=65)&&(slovo[i]<=90)) slovo[i]+=32;
             if ((slovo[i]=='a') || (slovo[i]=='e') || (slovo[i]=='i') || (slovo[i]=='o') || (slovo[i]=='u'))
             {
              i++;
              
             }
   cout << "Slovo obsahuje " << i << " samohlasok";
{
  cin.clear();
  cin.sync();
  cin.get();
  return 0;
}




niekde je tam chyba neviete mi povedat co tam je zle?
Napísať odpoveď