C++ cout<<problem


#1

Pozdrav da li postoji neki nacin da kad cout-ujem brojevr recimo u vajlu da mi ih ispisuje u nazad
Na primer:
int n=2
while(n>0)
{
cout<<n;
n–;
}
e sad na izlaznom ekranu bi se ispisalo 21 a jel mogu nesto da uradim kako bi pisalo 12
pokusavao sam da ubacim char karakter za START OF TEXT koji u aski tabeli ima vrednost 2,
te bi to izgledalo ovako
char c=2
int n=2
while(n>o)
{
cout<<n<<c;
n–;
}
ali meni na izlaznom ekranu ispisuje 2?1

Moze li mi neko pomoci u vezi ovog problema
hvala unapred.


#2

moj je predlog da ubacis u for petlju gde ces imati pomocnu promenjivu “int i” koja ce rasti do “int n” :


int n=2;
for(int i=1;i<=n;i++){
cout<<i;
}


mozes isto i while petljom:


int n=2;
int i=1;
while(i<=n){
cout<<i;
i++;
}


i druga stvar u ASCII tabeli 2 nema redni broj 2 vec 50, nula ima redni broj 48 stoga je 2 ===> char 48+n sto mozes i videti na ovoj tabeli: http://www.asciitable.com/
a razlog zasto je izmedju 2 i 1 ispisalo ? je taj sto se u tabeli na 2 mestu nalazi komanda koja se ne ispisuje.


pitaj stogod ti nije jasno


#3

hvala na odgovoru ali meni je problem konkretno u sledecem
/*Potrebno je sracunati zbir 2 velika broja. Ti brojevi su previše veliki da se predstave kao “int”, vec moraju da se smeste u niz.
Ulaz:
Prvi red ulaza sadrži ceo broj N koji predstavlja broj cifara prvog broja.
Sledeci red ulaza sadrži N cifara razdvojenih razmacima, koje cine prvi broj.
Treci red ulaza sadrži ceo broj M, koji predstavlja broj cifara drugog broja.
Poslednji red ulaza sadrži M cifara razdvojenih razmacima, koje cine drugi broj.
Izlaz:
Treba ispisati zbir ulaznih brojeva. Cifre ispisanog broja ne treba da budu razdvojene razmacima.
*/
#include
1 #include
2 #include
3 using namespace std;
4 int main()
5 {
6 int n,m,i=0,l=0,b,c,p=0,k;
7
8 char ch=2;
9 cout<<"unesi broj cifara drugog broja: ";
10 cin>>n;
11 int cifre_broja_n[n];
12 cout<<"unosi cifre 1. broja: ";
13 13while(i<n)
14 {
15 cin>>cifre_broja_n[i];
16 i++;
17 }
18 i=i-1;
19 cout<<"unesi broj cifara drugog broja: ";
20 cin>>m;
21 int cifre_broja_m[m];
22 cout<<"unosi cifre 2. broja: ";
23 while(l<m)
24 {
25 cin>>cifre_broja_m[l];
26 l++;
27 }
28 l=l-1;
29 b=max(m,n);
30 cout<<"zbir ova dva broja je: ";
31 while(b>=0)
32 {
33 c=p+cifre_broja_m[l]+cifre_broja_n[i];
34 if(c>=10)
35 {
36 c=c-10;
37 p=1;
38 }
39 else {p=0;}
40
41 cout << c<<ch;
42
43 b–;
44 l–;
45 i–;
46 if(i<0) cifre_broja_n[i]=0;
47 if(l<0) cifre_broja_m[l]=0;
48 if(i<0 && l<0 && p==1)
49 {
50 cout<<p;
51 p=0;
52 }
53 if(i<0 && l<0 && p!=1) break;
54 }
55
56
57}
izvinjavam se zbog slanja celog zadatka ali ne znam kako drugacije da kazem.
Meni je konkretno problem u tome kako da odradim deo izmedju 32 i 53 reda meni se trazeni broj sabere lepo samo sto je NAPISAN UNAZAD.
Mozes li mi konkretno za ovo pomoci ili eventualno dati savet da radim na drugi nacin :grinning:
ovako kako si mi predlozio da radim nece ici zbog toga sto mi treba onaj 1 pri sabiranju recimo 99+12
ispisao bi mi 101 umesto 111


#4

Nemoj da koristis promenjive da alociras velicinu niza(int cifre_broja_n[n]) umesto toga koristi konkretne vrednosti ili definisi konstante. Ako velicina niza nije poznata mozes da korisis vektore(vector < int > v(n)).
Predlazem ti da brojeve unosis u obrnutom redosledu tako da se na poziciji k nalazi cifra uz stepen 10^k.
Najlakse bi bilo da koristis jos jedan niz za resenje. Koji ces ispisati u obrnutom redosledu.


#5

Aha razumem sad.

  1. nacin
    Kad zavrsi sa unosom brojeva, zarotiraj oba niza pa sabiraj stim da ces morati malo da izmenis kod.

  2. nacin

napravi dodatni niz i umesto da ispisuje brojeve neka trpa u taj niz pa onda ispisuj te brojeve unazad.

  1. nacin

kada unosi brojeve, neka ih unese u obrnutom redosledu u niz.


#6

najbolje mu je preko stringova ali verovatno mu je zadatak napisan da vezba sa nizovima. cim se trazi da se unese duzina niza.


#8

HVALA!
Ideja sa koriscenjem novog niza je bila od velike pomoci


#9

Samo jos jedno malo pitanje, jel mi predstavlja neki problem to sto mi velicina niza nije poznata?
ako da moze li savet kako to da resim
ali ako moze bez vektora jel njih jos nisam ucio

P.S. to nije konkretno vezano za ovaj zadatak


#10

Pa zapravo moze da predstavlja veliki problem. Zato sto moze da dodje do greske Integer Length Array i da dobijes RTE na takmicenju zbog velikih ulaza. To se desava zato sto ti je kolicina memorije koju moze da koristi main poprilicno ogranicena i ako u sred koda zatrazis niz sa milijardu elemenata dodje do greske. Sa vektorima je to reseno zato sto se smestaju u drugo mesto u memoriji. Mozes uvek van main-a (ili bilo koje funkcije) da deklarises niz za MAX_N elemenata zato sto su ti uglavnom u zadatku data ogranicenja.


#11

Pa realno ja dosad nisam naisao na problem ako se koristi cin>>n; int a[n]; ali generalno na takmicenjima pise ispod koliko je ogranicenje pa napises toliko. sad ne znam da li ucis za takmicenje ili to onako zelis znati.


#12

ali da kao sto je fedikus rekao na takmicenjima moze doci do problemima ali ako znas da nece biti puno elemenata onda slobodno pravi preko te metode.


#13

Vazi hvala :grinning:
uzgred ne nije za takmicenje