[ Jordan90 @ 06.12.2011. 10:13 ] @
U VC++ 2010 iskucam kod,promenim extenziju u .c,kad se otvori konzola unesem tekst,pritisnem enter i ne vrati mi nikakvo resenje,vec se kursor jednostavno prebaci u novi red??
Jel moze neko da mi kaze o cemu se radi?

#include<stdio.h>
#define IN 1
#define OUT 0
main(){
int c,nl,nw,nc,state;

nl=nw=nc=0;
state = OUT;
while((c=getchar())!=EOF){
++nc;
if(c=='\n') ++nl;
if(c==' ' || c=='\n' || c=='\t')
state=OUT;
else if(state==OUT){
state = IN;
++nw;
}
}
printf("%d %d %d",nl,nw,nc);

}
[ djoka_l @ 06.12.2011. 10:16 ] @
Unos teksta završi sa CTRL D, jer to predstavlja EOF.
[ Jordan90 @ 06.12.2011. 10:36 ] @
Nece ni tad,isto se sve desava...
Inace na dnu ekrana,u delu 'Output':
'BrojanjeReci.exe': Loaded 'C:\Users\boka\Documents\Visual Studio 2010\Projects\BrojanjeReci\Debug\BrojanjeReci.exe', Symbols loaded.
'BrojanjeReci.exe': Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file
'BrojanjeReci.exe': Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file
'BrojanjeReci.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Cannot find or open the PDB file
'BrojanjeReci.exe': Loaded 'C:\Program Files\AVAST Software\Avast\snxhk.dll', Cannot find or open the PDB file
'BrojanjeReci.exe': Loaded 'C:\Windows\System32\msvcr100d.dll', Symbols loaded.
The thread 'Win32 Thread' (0x140c) has exited with code -1073741749 (0xc000004b).
The program '[5700] BrojanjeReci.exe: Native' has exited with code -1073741510 (0xc000013a).

E sad ja ne znam sta sve to znaci???????
Inace i raniji programi koje sam radio sa while petljom nisu funkcionisali,dok for petlja radi!
[ Mihajlo Cvetanović @ 06.12.2011. 10:44 ] @
Na strani sa NTSTATUS povratnim vrednostima piše da 0xc000013a znači "The application terminated as a result of a CTRL+C".
[ djoka_l @ 06.12.2011. 10:49 ] @
Evo slike izvršavanja "tvog" programa koji broji slova, reči i linije:

[ Jordan90 @ 06.12.2011. 10:50 ] @
Extra,takko bi i meni trebalo da pise.....
Ali ne pise!!!!

Sta si menjao u kodu?
U cemu je problem????????
[ djoka_l @ 06.12.2011. 11:06 ] @
Pokreni program u konzoli, a ne kroz VS. Ovo što vidiš na slici je ekran CygWin-a. Kroz glupavu VS konzolu ne možeš da uneseš znak EOF.
[ Jordan90 @ 06.12.2011. 11:14 ] @
Pa kako to da uradim?????
:((
Mislim,iskucao sam ga isto i u DevC++(ConsoleApplication) i opet je isti problem.....
Koji kompajler je uopste najbolji da naucim C???????
[ djoka_l @ 06.12.2011. 11:16 ] @
Nađi gde se nalazi EXE fajl i dva puta klikni na njega. Bolja opcija je da sa taskbara uđeš u run i otkucaš cmd, pa onda pokreni odatle tvoj exe.
Po meni, najbolja varijanta da naučiš C, ako ti je to želja, je da skineš Cygwin. Prilikom instalacije odaberi da se instaliraju i development alati (c kompajler i biblioteke).
[ Jordan90 @ 06.12.2011. 11:18 ] @
Zbog cega kroz VS konzolu ne moze da se unese EOF?? Ja sam cuo da je VC++ najbolji???
PS. Jel bi mogao da mi kazes jos i cemu sluzi EOF?
Znam da je to End of file,ali kako se izvrsava,malo detaljnije ako mozes????
Ili da otvorim novu temu?
[ Mihajlo Cvetanović @ 06.12.2011. 11:26 ] @
Za Visual Studio ti treba Ctrl+Z umesto Ctrl+D. Ovo sam izguglao: http://www.fredosaurus.com/notes-cpp/io/eof.html
[ djoka_l @ 06.12.2011. 11:34 ] @
Eto i to je rešeno.

U praistoriji računara, ASCII znak 0x04 (EOT) koji se dobija sa tastature pritiskom na CTRL D je označavao kraj zapisa fajla na magnetnoj traci. Konzola emulira na neki način kraj fajla tako što uobičajeno koristi kombinaciju tastera CTRL D (ili kao što je Mihajlo izguglao, neku drugu kombinaciju) da bi signalizirao kraj unosa.
[ Jordan90 @ 06.12.2011. 15:41 ] @
Ok,ali meni i dalje ne funkcionise ovaj kod,tj ne izbacuje mi nikakvo resenje...... Jednostavno mi na taster ENTER prebaci kursor u novi red!! !
A CTRL+Z radi super,hvala puno za to......

[ djoka_l @ 06.12.2011. 15:57 ] @
Ma radi ti program. Problem je što se konzola automatski zatvori kada se konzolni program završi pa ne stigneš da vidiš rezultat.

Da bi to izbegao, staviš na kraj programa system("pause"), pa neće odmah da se zatvori. Ako pokreneš program iz DOS prozora, takođe možeš da vidiš rezultat.
[ Jordan90 @ 06.12.2011. 16:03 ] @
U PRAVU SI!!!RADIIIII!
Momci hvala vam puno,ja tek poceo sa C-om,pa cemo se verovatno sretati jos po forumu....
Nadam se da nisam bio previse naporan
Hvala jos jednom.
[ Jordan90 @ 10.12.2011. 09:32 ] @
Kad se otvori konzola,pise "Uneti dva broja",ja koji god da unesem,samo izbaci rezultat je 0!
????

Code:
#include<stdio.h>
void main(){
  int a,b,rez;
  printf("Uneti dva broja a i b\n");
  scanf("a=",&a);
  scanf("b=",&b);
  if(a>b){
    rez = a-b;
  }
  else{
    rez = b-a;
  }
  printf("Rezultat je %d\n ",rez);
  system("pause");
}



[ Mihajlo Cvetanović @ 10.12.2011. 09:41 ] @
Funkcija scanf ne služi za ispisivanje i čitanje nego samo za čitanje. Umesto:
Code:
scanf("a=", &a);

mora da stoji:
Code:
printf("a=");
scanf("%d", &a);
[ Jordan90 @ 10.12.2011. 10:49 ] @
Zasto mi prikazuje gresku??
Nece uopste da se pokrene program?

Code:
#include <stdio.h>

void main(){
  int i;
  for( i = 0; i < 200; i++ )  {
    if( (i % 2) != 0) continue;
    printf( "%d\n", i);
  }
}


[Ovu poruku je menjao Mihajlo Cvetanović dana 10.12.2011. u 22:54 GMT+1]
[ Mihajlo Cvetanović @ 10.12.2011. 21:56 ] @
Ispravio sam ovaj kod tako što sam dodao jednu zatvorenu vitičastu zagradu. Možda je to i kod tebe bio problem. Ako želiš da ti pomognemo onda sledeći put budi precizniji. Kada kažeš da javlja grešku onda napiši koju grešku. Brže ćeš doći do odgovora.
[ Jordan90 @ 10.12.2011. 22:33 ] @
Zasto da dodajes zatvorenu viticastu zagradu kad sam otvorio main(){,pa for { i na kraju zatvorio obe???
Inace to mi je i najveci problem,jer kompajler ne prikazuje gde je greska???
Radim u VC++ 2010 i jednostavno mi samo izbaci System cannot find the file unspecified..
Pitao sam i profesora na faxu,proverio je kod i kaze da da za sve razmake umesto koda '0x20' (space)
stoji '0xA0' (non-breaking space). On je probao u MS C++ 2003 i sve je radilo perfektno....
A meni 90% programa ne funkcionise i stalno izbacuje istu gresku.... Iskreno malo mi je bzvze jer su ovo neki pocetni kodovi
a meni ne rade..... A zaista ne znam o cemu se radi?
Da nije problem u instalaciji?
[ Mihajlo Cvetanović @ 11.12.2011. 00:57 ] @
Zanimljivo je ovo što si rekao za non-breaking space. Pretpostavljam da si radio copy-paste sa neke stranice na brauzeru. Taj simbol izgleda kao običan razmak, ali nije običan, i moguće je da se kompajler zbuni recimo u imenu fajla koji ima razmak u sebi, ili možda se taj non-breaking space nalazi u sadržaju fajla. Nisi dao dovoljno informacija pa moram ovako da pretpostavljam. Attachuj ovde fajl koji pravi problem, pa da ga vidimo. Pošto napraviš poruku imaš dugme "Upload uz poruku", i preko njega možeš da priložiš fajl. Nemoj da radiš copy-paste sadržaja fajla, jer se tako možda gubi informacija.
[ Jordan90 @ 11.12.2011. 10:07 ] @
Prekucao sam ovaj program za obim pravougaonika,otvori se konzola pise "Unesi stranice a i b",ja unesem i izbaci odgovor "Povrsina pravougaonika je 0.00000000000000000000" !!!
Radim po ovom "Srpskom skolskom tutorialu"!

Ovaj drugi,do-while prikazuje gresku????

I jos dosta programa prikazuje gresku kao ovaj drugi,a nijedan nisam kopirao !!

O cemu se radi?
[ Mihajlo Cvetanović @ 11.12.2011. 12:47 ] @
Fajl obim.c ima dužinu od nula bajtova (nema sadržaj). U dowhile.zip nema nikakvog .c fajla. Bez tih .c fajlova ne možemo da ti pomognemo. Priloži samo .c fajlove, za sada nam ne trebaju ostali priloženi fajlovi.
[ Mihajlo Cvetanović @ 11.12.2011. 12:50 ] @
A to što u dowhile projektu nedostaje .c fajl je zapravo u skladu sa porukom greške "System cannot find the file specified". Jbg, nema fajla.
[ Jordan90 @ 11.12.2011. 13:17 ] @
Evo opet sam ga prekucao,promenio extenziju u .c i sve super radi samo sto u odgovoru,
"Obim pravougaonika je _______"(ne daje rezultat)!!!

A ovaj dowhile takodje kaze da nema fajla a evo ja ga okacio!!??
[ Mihajlo Cvetanović @ 11.12.2011. 15:07 ] @
Kod zadatka sa obimom "%.3" nije pravilan format za ispisivanje broja. Tu treba da stoji "%.3d".

Što se tiče dowhile zadatka veruj mi da kompjuter ne greši kad kaže da ne vidi fajl. Možda nije na dobrom mestu. Ukloni fajl iz projekta, pa ga zatim ponovo ubaci u projekat.
[ Jordan90 @ 25.01.2012. 09:21 ] @
Zasto program nece da mi podeli dva int broja i kao rezultat da ceo broj!
Evo ovo je banalan primer,pa ako neko moze da pomogne????


#include <stdio.h>
#include <math.h>

void main(){
int a=3;int b = 14;
double n = b/a;
printf("Broj n je %f\n",n);
system("pause");
}

Kao rezultat izbaci 4.00000 ?????????
[ the_tosic @ 25.01.2012. 09:34 ] @
Code:
#include <stdio.h>
#include <math.h>

void main(){
 int a=3;
 int b = 14;
 //double n = b/a;
 int c = b/a;
 //printf("Broj n je %f\n",n);
 printf("Broj c je %d\n",c);
 system("pause");
}


Code:
#include <stdio.h>
#include <math.h>

void main(){
 int a=3;
 int b = 14;
 //double n = b/a;
 double n = ((double)b)/a;
 printf("Broj n je %f\n",n);
 system("pause");
}


Inace na drugoj temi si pitao kako da pocnes sa programiranjem OS-a, definitivno nemoj da pocinjes sada nego prvo savladaj C malo bolje.
A ne bi skodilo i da savladas ceo proces koji vodi od izvornog koda do izvrsnog koda (preprocesiranje, prevodjenje, linkovanje)
[ Mihajlo Cvetanović @ 25.01.2012. 09:40 ] @
Kako to misliš "zašto program neće da podeli dva broja i proizvede celobrojan rezultat"? Pa program upravo to i radi. Ako umesto 4 želiš da rezultat bude 4.66.. onda umesto n = b/a treba ti n = (double)b/a. Osnovne matematičke operacije se obavljaju tako što kompajler određuje tip rezultata na osnovu komplikovanijeg sudeonika. Pošto su obe promenljive a i b tipa int onda kompajler odluči da i rezultat mora da bude int. To što se u sledećem koraku taj int rezultat dodeli double promenljivoj, to već nije kompajlerov problem. Ako želiš da podeliš dva broja koja su tipa X (u tvom slučaju int), a da rezultat bude tipa Y koji je "jači" od tipa X (u tvom slučaju double) onda moraš da kastuješ (pretvoriš) jedan od ta dva broja u tip Y. Kad u operaciji učestvuju dva broja od kojih je jedan tipa Y, a drugi tipa X (i tip Y je "jači" od X) onda je rezultat automatski tipa Y.
[ Jordan90 @ 25.01.2012. 09:54 ] @
Hvala,skontao sam...
Citat:

A ne bi skodilo i da savladas ceo proces koji vodi od izvornog koda do izvrsnog koda (preprocesiranje, prevodjenje, linkovanje)


Jel bi mogao da mi kazes kako to da savladam.. sad radim samo osnove C,po knjizi Dennis Ritchie,a kako da udjem malo dublje u sve to? U samu sustinu programiranja?


[ Jordan90 @ 25.01.2012. 11:57 ] @
Da li kod nizova mogu elemente koji su mi nepotrebni da definisem kao null vrednosti,ili da ih prosto izbacim iz niza tako da niz[1] postane niz[0]??
Konkretno,ako treba da se unese ime i prezime sa razmakom samo izmedju,kako da izbacim sve razmake(ili znakove) koji su ispred stringa ime_prezime??
[ Mihajlo Cvetanović @ 25.01.2012. 12:17 ] @
U Windowsu imaš SDK funkciju StrTrim.
U MFC-u (koji ide uz Visual Studio) imaš CString::Trim.
Postoje razna rešenja za trimovanje standardnog std::string.
[ Jordan90 @ 25.01.2012. 12:59 ] @
Uh pa nista ne razumem,cini mi se da bi SDK funkcija bila najbolja,ali to je za C++ a meni treba za C?
Jel postoji neka jednostavnija funkcija,kao sto strcpy kopira stringove tako da ova brise delove stringa?
[ Mihajlo Cvetanović @ 25.01.2012. 13:07 ] @
Naprotiv, sve SDK funkcije su pravljene da mogu da se koriste u C-u (a samim time i u C++-u). A za CString i std::string ti treba C++, ali to sam dodao čisto reda radi.
[ Jordan90 @ 25.01.2012. 15:42 ] @
Kako funkcionise funkcija memmove u C??
Kapiram da je to neka vrsta siftovanja,ali na koji nacin radi?
[ Jordan90 @ 26.01.2012. 17:57 ] @
Sta znaci ova greska?

[Linker error] undefined reference to `WinMain@16'
[ X Files @ 26.01.2012. 19:22 ] @
Verovatno si napravio Win32 aplikaciju, sa main() umesto WinMain().
[ Mihajlo Cvetanović @ 27.01.2012. 09:06 ] @
Ili funkcija main() potpuno nedostoje. Kratka pretraga na Guglu tako sugeriše.
[ Jordan90 @ 09.02.2012. 15:30 ] @
Imam problem sa ovim kodom,postavio sam ga i u prvom postu na ovoj temi,sad samo pisem u drugom kompajleru (DevC++) i izbacuje mi gresku
11 C:\Dev-Cpp\Programski jezik C\Brojac cifara,.c:13 empty character constant

Code:
#include <stdio.h>
#define IN  1
#define OUT 2
main(){
    int c,nl,nw,nc,state;
    state = OUT;
    nl=nw=nc=0;
    while((c=getchar())!='\0'){
        nc++;
        if (c=='\n')
            nl++;
        if(c=='' || c=='\n' || c=='\t')
            state = OUT;
        else if(state == OUT){
            state = IN;
            nw++;
        }
    }
    printf("%d %d %d \n",nw,nl,nc); 
    system("pause");   
}

A inace kod je identican kao u knjizi?
[ Mihajlo Cvetanović @ 09.02.2012. 15:40 ] @
Piše da je greška u liniji 13 i da glasi "empty character constant". Na liniji 13 je sledeći kod:

Code:
if(c=='' || c=='\n' || c=='\t')


Tu se promenljiva c poredi sa tri karaktera, ali problem je što prvi od ta tri nije karakter, nego samo dva znaka navodnika a ništa između. Stavi nešto između, recimo jedan razmak, i kompilacija će uspeti.

Uzgred, pitam za potrebe statistike, zašto koristiš Dev-C++?
[ Jordan90 @ 09.02.2012. 17:22 ] @
Da,skontao sam da mora nesto izmedju,hvala u svakom slucaju.

DevC++ zato sto je najjednostavniji za pisanje kodova i instalaciju. Pokusao sam u VC++ ali sam bas imao problema.
[ Mihajlo Cvetanović @ 09.02.2012. 17:28 ] @
Da li si pokušao sa Code::Blocks? Taj je idejni naslednik Dev-C++, a Dev-C++ je star, mrtav, i ne razvija se više.
[ Jordan90 @ 10.02.2012. 08:37 ] @
Pa nisam,videcu da ga skinem u najskorije vreme,hvala..