Forum » Programiranje » [Naloga][C++] polje(znaki,cifre)
[Naloga][C++] polje(znaki,cifre)
cosa nostra ::
Ko podam samo cifre deluje ok.ko podam pa še črke pa mi jih šteje pod cifre ter sešteva (vsota) Mogo bi pretvorit samo nevem kje.lp hvala
int main()
{
string bes;
short a;
a=0;
short j;
j=0;
short vsota;
vsota=0;
short i;
i=0;
cout<<"Podaj poljubno besedilo"<<endl;
getline(cin,bes);
do
{
if(bes[j]>='0' and bes[j] <='9');
{
j=j+1;
}
vsota=vsota+j;
if((bes[i]>='A'and bes[i]<='Z') and (bes[i]>='a'and bes[i]<='z'));
{
i=i+1;
}
a=a+1;
}while(bes[j]!='\0');
cout<<"V BESEDILU JE "<<a<<"ZNAKOV"<<endl;
cout<<"V BESEDILU JE "<<j<<"CIFER"<<endl;
cout<<"VSOTA CIFER JE "<<vsota<<endl;
cout<<"V BESEDILU JE "<<i<<"CRK"<<endl;
system("pause");// da is ogledam rezultate na zaslonu
return 0;
} 
kuall ::
in spremeni
vsota=vsota+j;
v
vsota=vsota+bes[j]-'0';
ker če si pogledaš http://www.asciitable.com/ boš videl da je '0' v resnici številka 48, '
1' je 49, '2' je 50 itd.
pa spremeni imena spremenljivk za božjo voljo:)
j v stCifer, a v stZnakov, i v stCrk, za boljšo preglednost kode.
vsota=vsota+j;
v
vsota=vsota+bes[j]-'0';
ker če si pogledaš http://www.asciitable.com/ boš videl da je '0' v resnici številka 48, '
1' je 49, '2' je 50 itd.
pa spremeni imena spremenljivk za božjo voljo:)
j v stCifer, a v stZnakov, i v stCrk, za boljšo preglednost kode.
Zgodovina sprememb…
- spremenilo: kuall ()
cosa nostra ::
[st.citat p4006945]in spremeni
vsota=vsota+j;
v
vsota=vsota+bes[j]-'0';
Če naredim tako mi še cifer ne pravilno sešteva. 1+2+3 =-43.
Problem mam tudi da če podam 123ab mi šteje kao 5 cifer in 5 črk.)
vsota=vsota+j;
v
vsota=vsota+bes[j]-'0';
Če naredim tako mi še cifer ne pravilno sešteva. 1+2+3 =-43.
Problem mam tudi da če podam 123ab mi šteje kao 5 cifer in 5 črk.)
GupeM ::
Vse napake:
Podpičja za if stavki: Neglede na to, ali if stavek drži ali ne, tisto kar je za njim se ti bo vedno izvedlo, ker si dodal podpičje takoj za if stavkom.
V if stavkih ne uporabljaj bes[j] in bes[i], ker i in j se povečata samo takrat, kadar pogoj drži. Uporabljaj bes[a], ki se poveča pri vsaki iteraciji.
Glej prejšnji popravek tudi za while(...) del.
vsota=vsota+j; mora biti znotraj prvega if stavka (povečaš jo samo če je cifra).
vsota=vsota+j; ni pravilno zapisana: v tem primeru vsoti prišteješ zaporedno številko cifre.
Drugi if stavek se izvede samo če je črka med A in Z IN HKRATI med a in z. Kar pa ne bo nikoli. Izvesti se mora če je črka med A in Z ALI med a in z.
To pa mislim da je tudi vse
Podpičja za if stavki: Neglede na to, ali if stavek drži ali ne, tisto kar je za njim se ti bo vedno izvedlo, ker si dodal podpičje takoj za if stavkom.
V if stavkih ne uporabljaj bes[j] in bes[i], ker i in j se povečata samo takrat, kadar pogoj drži. Uporabljaj bes[a], ki se poveča pri vsaki iteraciji.
Glej prejšnji popravek tudi za while(...) del.
vsota=vsota+j; mora biti znotraj prvega if stavka (povečaš jo samo če je cifra).
vsota=vsota+j; ni pravilno zapisana: v tem primeru vsoti prišteješ zaporedno številko cifre.
Drugi if stavek se izvede samo če je črka med A in Z IN HKRATI med a in z. Kar pa ne bo nikoli. Izvesti se mora če je črka med A in Z ALI med a in z.
To pa mislim da je tudi vse
cosa nostra ::
Deluje vse 
int main()
{
string bes;
short a;
a=0;
short j;
j=0;
short vsota;
vsota=0;
short i;
i=0;
short n;
n=0;
cout<<"Podaj poljubno besedilo"<<endl;
getline(cin,bes);
do
{
if(bes[a]>='0' and bes[a] <='9')
{
j=j+1;
vsota=vsota+bes[a]-48
;
}
if((bes[a]>='A'and bes[a]<='Z') or (bes[a]>='a'and bes[a]<='z'))
{
i=i+1;
}
if(bes[a]>='!'and bes[a]<='/')
{
n=n+1;
}
a=a+1;
}while(bes[a]!='\0');
cout<<"V BESEDILU JE "<<a<<"ZNAKOV"<<endl;
cout<<"V BESEDILU JE "<<j<<"CIFER"<<endl;
cout<<"VSOTA CIFER JE "<<vsota<<endl;
cout<<"V BESEDILU JE "<<i<<"CRK"<<endl;
cout<<"V BESEDILU JE "<<n<<" drugih znakov"<<endl;
system("pause");// da is ogledam rezultate na zaslonu
return 0; roba87 ::
Super, da ti deluje, ampak čimprej se poskušaj navadit na neko obliko, ko pišeš kodo. Uporabljaj Visual Studio, če imaš Windows. Izogni se uporabi "and" "or" in jih zamenjaj z "&&" "||". Koda pa naj izgleda približno tako...
#include <iostream>
#include <string>
using namespace std;
int main()
{
string bes;
short int a = 0;
short int j = 0;
short int vsota = 0;
short int i = 0;
short int n = 0;
cout <<"Podaj poljubno besedilo"<< endl;
getline(cin,bes);
do
{
if (bes[a] >= '0' && bes[a] <='9')
{
j = j + 1;
vsota = vsota + bes[a] - 48;
}
if ((bes[a] >= 'A'&& bes[a] <= 'Z') || (bes[a] >= 'a' && bes[a] <= 'z'))
{
i = i + 1;
}
if (bes[a] >= '!' && bes[a] <= '/')
{
n = n + 1;
}
a = a + 1;
} while(bes[a] != '\0');
cout <<"V BESEDILU JE "<< a <<"ZNAKOV"<< endl;
cout <<"V BESEDILU JE "<< j <<"CIFER"<<endl;
cout <<"VSOTA CIFER JE "<< vsota << endl;
cout <<"V BESEDILU JE "<< i <<"CRK"<< endl;
cout <<"V BESEDILU JE "<< n <<" drugih znakov"<< endl;
system ("pause");// da is ogledam rezultate na zaslonu
return 0;
} Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | Pomoč pri sestavi algoritmaOddelek: Programiranje | 10170 (9001) | mihy11 |
| » | c# - pretvorba short[2] v floatOddelek: Programiranje | 4341 (3954) | KernelPanic |
| » | Rabim pomoc!Oddelek: Programiranje | 1214 (1023) | FrEaKmAn |
| » | Založbe zahtevale za 75 bilijonov odškodnine od p2p ponudnika LimeWireOddelek: Novice / Avtorsko pravo | 8618 (6867) | MrStein |
| » | [Java] programiranje "praštevila"Oddelek: Programiranje | 2712 (2590) | blaz_ |