Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

StdIn
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Ongo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2006. (14:37:33)
Postovi: (23)16
Sarma = la pohva - posuda
= 6 - 3

PostPostano: 17:49 čet, 18. 5. 2006    Naslov: StdIn Citirajte i odgovorite

Hi
Imam novo pitanje.

[code:1]#include <stdio.h>
#include <string.h>

int main(){
int n;
char a[20],b[20];

scanf("%d",&n);
printf("Unesi prvi broj");
gets(a);
printf("Unesi drugi broj");
gets(b);
return 0;
}
[/code:1]

Nakon sto se utipka broj (n), pritisne se ENTER. Taj isti ENTER ('\n') gets(a) shvati kao svoj unos, a kako gets ucitava do pojave istog, ucitavanje je kratkog vijeka. gets(b) napravi sto bi napraviti trebao; izuzmemo li da ucita krivi string (no to je krivica predhodnog gets-a).

Ukoliko gets zamijenimo sa scanf (u formatu za string) problem se donekle rijesava. No, to je prelagano; postoje barem 3 nacina da se problem rijesi uz upotrebu gets-a: radi se o unosima ispred pojave prvog gets-a;

1.) fflush(stdin);
2.) scanf("%");
3.) scanf(" ");

Zasto scanf %d ne konzumira \n , tj. zasto ga ne makne iz input stream-a, kad ga je iskoristio (za indikaciju kraja unosa)? Ukoliko se ucitava vise %d -ova i ukoliko se medu pojednim unosima koriste \n , oni se nece gomilati, nego ce se uredno maknuti iz stream-a. Zasto je kraj unosa iznimka? Jasno mi je da zato scanf %s ne moze ucitati prazan string jer tada kombinirani formatirani unos ne bi imao smisla, no nikako mi nije jasno zasto scanf %d ne makne \n?

Sve sam probao; cak sam i setbuf postavio pa ispisivao sto se tocno u kom trenutku u bufferu dogada. No nije pomoglo. Stovise, cak me jos vise i zbunilo: it turns out, scanf %d unos zavrsi s 2, ne jednim \n. Zasto?

Takoder me zanima zasto 1.), 2.) i 3.) rijesavaju problem: iz nekog razloga znam da to tako treba rijesiti, ali ne znam (jos gore; ne razumijem) zasto?
Hi
Imam novo pitanje.

Kod:
#include <stdio.h>
#include <string.h>

int main(){
int n;
char a[20],b[20];

scanf("%d",&n);
printf("Unesi prvi broj");
gets(a);
printf("Unesi drugi broj");
gets(b);
return 0;
}


Nakon sto se utipka broj (n), pritisne se ENTER. Taj isti ENTER ('\n') gets(a) shvati kao svoj unos, a kako gets ucitava do pojave istog, ucitavanje je kratkog vijeka. gets(b) napravi sto bi napraviti trebao; izuzmemo li da ucita krivi string (no to je krivica predhodnog gets-a).

Ukoliko gets zamijenimo sa scanf (u formatu za string) problem se donekle rijesava. No, to je prelagano; postoje barem 3 nacina da se problem rijesi uz upotrebu gets-a: radi se o unosima ispred pojave prvog gets-a;

1.) fflush(stdin);
2.) scanf("%");
3.) scanf(" ");

Zasto scanf %d ne konzumira \n , tj. zasto ga ne makne iz input stream-a, kad ga je iskoristio (za indikaciju kraja unosa)? Ukoliko se ucitava vise %d -ova i ukoliko se medu pojednim unosima koriste \n , oni se nece gomilati, nego ce se uredno maknuti iz stream-a. Zasto je kraj unosa iznimka? Jasno mi je da zato scanf %s ne moze ucitati prazan string jer tada kombinirani formatirani unos ne bi imao smisla, no nikako mi nije jasno zasto scanf %d ne makne \n?

Sve sam probao; cak sam i setbuf postavio pa ispisivao sto se tocno u kom trenutku u bufferu dogada. No nije pomoglo. Stovise, cak me jos vise i zbunilo: it turns out, scanf %d unos zavrsi s 2, ne jednim \n. Zasto?

Takoder me zanima zasto 1.), 2.) i 3.) rijesavaju problem: iz nekog razloga znam da to tako treba rijesiti, ali ne znam (jos gore; ne razumijem) zasto?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Grof
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 11. 2002. (17:15:33)
Postovi: (44)16
Sarma = la pohva - posuda
-3 = 1 - 4

PostPostano: 0:24 ned, 21. 5. 2006    Naslov: Citirajte i odgovorite

A zasto ne napises jednostavno:

[code:1]
scanf("%d\n",&n);
[/code:1]
A zasto ne napises jednostavno:

Kod:

scanf("%d\n",&n);


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Ongo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2006. (14:37:33)
Postovi: (23)16
Sarma = la pohva - posuda
= 6 - 3

PostPostano: 19:02 ned, 21. 5. 2006    Naslov: Citirajte i odgovorite

Sjetio sam se toga, ali na zalost, ne pomaze u potpunosti; prvi printf se u tom slucaju ispise nakon prvog unosa.
Sjetio sam se toga, ali na zalost, ne pomaze u potpunosti; prvi printf se u tom slucaju ispise nakon prvog unosa.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
HijenA
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 23. 01. 2004. (16:46:04)
Postovi: (3D2)16
Spol: muško
Sarma = la pohva - posuda
-26 = 44 - 70
Lokacija: Prazan skup ;-)

PostPostano: 19:24 ned, 21. 5. 2006    Naslov: Re: StdIn Citirajte i odgovorite

[quote="ongo"]Takoder me zanima zasto 1.), 2.) i 3.) rijesavaju problem: iz nekog razloga znam da to tako treba rijesiti, ali ne znam (jos gore; ne razumijem) zasto?[/quote]

ovo pod 1) radi zato sto ti ta naredba prazni buffer na standardnom ulazu.
ongo (napisa):
Takoder me zanima zasto 1.), 2.) i 3.) rijesavaju problem: iz nekog razloga znam da to tako treba rijesiti, ali ne znam (jos gore; ne razumijem) zasto?


ovo pod 1) radi zato sto ti ta naredba prazni buffer na standardnom ulazu.



_________________
Chuck Norris can divide by zero.

I bow before you Veliki Limun, on je kiseo i zut Bow to the left

[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
ahri
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 11. 2003. (23:16:07)
Postovi: (193)16
Sarma = la pohva - posuda
= 7 - 0

PostPostano: 5:55 pon, 22. 5. 2006    Naslov: Citirajte i odgovorite

nisam siguran sto zelis (letimicno citam forum, sorry), ali probaj pojesti whitespaceove:

scanf("%d ", &n);
nisam siguran sto zelis (letimicno citam forum, sorry), ali probaj pojesti whitespaceove:

scanf("%d ", &n);



_________________
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Ongo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2006. (14:37:33)
Postovi: (23)16
Sarma = la pohva - posuda
= 6 - 3

PostPostano: 16:25 sri, 24. 5. 2006    Naslov: Citirajte i odgovorite

Poglec gore, to je ista ideja koju je Grof predlozio.
Poglec gore, to je ista ideja koju je Grof predlozio.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
ahri
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 11. 2003. (23:16:07)
Postovi: (193)16
Sarma = la pohva - posuda
= 7 - 0

PostPostano: 3:01 pet, 26. 5. 2006    Naslov: Citirajte i odgovorite

nije.
\n ce pojesti enter
" " ce pojesti sve whitespaceove (\, \n, ' ').
nije.
\n ce pojesti enter
" " ce pojesti sve whitespaceove (\, \n, ' ').



_________________
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
goc9999
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 15. 10. 2003. (19:31:20)
Postovi: (238)16
Spol: muško
Sarma = la pohva - posuda
= 27 - 22
Lokacija: Utrina

PostPostano: 10:53 pet, 26. 5. 2006    Naslov: Citirajte i odgovorite

[code:1]#include <stdio.h>
#include <string.h>

int main(){
int n;
char a[20],b[20];

//scanf(" %d",&n);
printf("Unesi prvi broj");
gets(a);
printf("Unesi drugi broj");
gets(a);
return 0;
} [/code:1]

i sve je ok,ali zasto poludi kad stavim scanf???? ne znam :computer:
Kod:
#include <stdio.h>
#include <string.h>

int main(){
int n;
char a[20],b[20];

//scanf(" %d",&n);
printf("Unesi prvi broj");
gets(a);
printf("Unesi drugi broj");
gets(a);
return 0;
}


i sve je ok,ali zasto poludi kad stavim scanf???? ne znam Opasni su ti danasnji PCi


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Ongo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2006. (14:37:33)
Postovi: (23)16
Sarma = la pohva - posuda
= 6 - 3

PostPostano: 18:04 pet, 26. 5. 2006    Naslov: Citirajte i odgovorite

[quote="ahri"]nije.[/quote]

Je. Ideja je ista, a ta je da se pojede enter.

[quote="ahri"]
\n ce pojesti enter
" " ce pojesti sve whitespaceove (\, \n, ' ').[/quote]

Detalji izvedbe.
Sve u svemu, ne radi.
ahri (napisa):
nije.


Je. Ideja je ista, a ta je da se pojede enter.

ahri (napisa):

\n ce pojesti enter
" " ce pojesti sve whitespaceove (\, \n, ' ').


Detalji izvedbe.
Sve u svemu, ne radi.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan