Prilično je čuvena ova The C Programming Language koju je preporučio DRM, a ja raspolažem verzijama na hrvatskom i engleskom jeziku, pa ako je netko zainteresiran, neka se javi na PP i možda se nešto dogovorimo
Pozdrav.
Prilično je čuvena ova The C Programming Language koju je preporučio DRM, a ja raspolažem verzijama na hrvatskom i engleskom jeziku, pa ako je netko zainteresiran, neka se javi na PP i možda se nešto dogovorimo
Pozdrav.
Dali mi možete pomoći s ovim programom, sta je krivo u njemu.
#include<stdio.h>
#include<conio.h>
int
main (void)
{
int n, s, c, p;
FILE *in;
in = fopen ("broj.data", "r");
s = 0;
c = 0;
while (fscanf (in, "%d", &n) != EOF)
{
s = s + n;
c = c + 1;
}
fclose (in);
printf ("U datoteci je %d brojeva", c);
printf ("\nZbroj svih brojeva u datoteci je %d", s);
p = s / c;
printf ("\nProsjek svih brojeva je %f", p);
getch();
}
Kada sve napravim i pokrenem program windows mi izbaci ovo.
program.exe has encountered a problem and needs to close. We are sorry for the inconvenience.
Hvala unaprijed
ovako sad napamet.. mogući problem je ako je datoteka prazna. Onda je c = 0 i tada
p = s/c
će biti diviosion by zero. Usto, bilo bi zgodno da provjeriš pokazivač in tj. da li si uopće uspio otvoriti datoteku.
Ono zbog čega program ne radi je jer nema returna na kraju ;-)
Nakon getch() ubaci return 0; i stvar radi.
Par detalja :
Logično bi bilo da je p double, ne int. Čisto jer prosječna vrijednost prirodnih brojeva ne mora biti prirodni broj, npr (3+4)/2=3.5
Samim time što je double, kod dijeljenja treba staviti (double) ispred. To je cast operator i on će pretvorit s u double, i napravit normalno dijeljenje (inače radi cjelobrojno, pa bi bilo 7/2=3 )
Također preporučio bih ovo kod otvaranja datoteke:
if ( (in = fopen ("broj.data", "r"))==NULL )
{
printf("Nema ulazne datoteke!\n");
return 1; //ili exit(1) ili neka druga naredba za prekidanje programa
}čisto da se eliminira greška kada nema datoteke, a javlja neko čudo ili ne radi :D
edit : i da, to što Tracer kaže, prije računanja prosjeka stavit if (c!=0) da napravi provjeru dal je uopće bilo brojeva :D
Ono zbog čega program ne radi je jer nema returna na kraju ;-)
To ne bi trebao biti razlog da program ne radi. Eventualno bi to za to dobio upozorenje compilera. Uostalom, on i sam kaže da se program pokrene i da se greška događa u runtime-u.
Našao sam u čemu je bio problem, program nije mogao pronaći datoteku jer sam stavio krivi naziv datoteke.
Nije išlo broj.data, nego je trebalo broj.txt
Pozdrav! Imam problem sa stringovima u jeziku C. Moze li neko da mi ukratko objasni kako da uradim jedan zadatak. Profesor koji mi predaje programiranje je informaticar i slabo objasnjava. Zadatak glasi ovako: program treba da izracuna broj pojavljivanja datog znaka u datom nizu npr. u pitanju je broj pojavljivanja znaka a u nizu: ja sam student, Petar Petrovic .
Pozdrav! Imam problem sa stringovima u jeziku C. Moze li neko da mi ukratko objasni kako da uradim jedan zadatak. Profesor koji mi predaje programiranje je informaticar i slabo objasnjava. Zadatak glasi ovako: program treba da izracuna broj pojavljivanja datog znaka u datom nizu npr. u pitanju je broj pojavljivanja znaka a u nizu: ja sam student, Petar Petrovic .
Bit zadatka je to da napraviš jednu while petlju koja uzima jedan po jedan znak iz stringa i provjerava je li jednak traženom znaku. Ako jest, poveća varijablu 'brojač' za 1, i tako dok ne naiđe na znak '\0' (tim znakom se u Cu obilježava kraj stringa i tako program zna kada je pregledao cijeli string).
Na kraju petlje varijabla 'brojač' će sadržavati broj ponavljanja traženog znaka u stringu.
Pozdrav! Imam problem sa stringovima u jeziku C. Moze li neko da mi ukratko objasni kako da uradim jedan zadatak. Profesor koji mi predaje programiranje je informaticar i slabo objasnjava. Zadatak glasi ovako: program treba da izracuna broj pojavljivanja datog znaka u datom nizu npr. u pitanju je broj pojavljivanja znaka a u nizu: ja sam student, Petar Petrovic .
#include <stdio.h>
int main(){
char string[100];
char znak;
int brojac=0,i=0;
printf("Unesite string: ");
scanf("%[^\n]",string);
getchar();
printf("Unesite znak koji trazite: ");
scanf("%c",&znak);
do{
if(string[i]==znak){
brojac++;
}
i++;
}while(string[i]!='\0');
printf("\nTrazeni znak se u stringu pojavljuje %d puta!",brojac);
getche();
return 0;
}
#include <stdio.h>
int main(){
char string[100];
char znak;
int brojac=0,i=0;
printf("Unesite string: ");
scanf("%[^\n]",string);
getchar();
printf("Unesite znak koji trazite: ");
scanf("%c",&znak);
do{
if(string[i]==znak){
brojac++;
}
i++;
}while(string[i]!='\0');
printf("\nTrazeni znak se u stringu pojavljuje %d puta!",brojac);
getche();
return 0;
}
Što će se u ovom slučaju desiti ako je zadani string zapravo prazan?
Nisu rađene nikakve dodatne provjere unosa.
Jel teško iskompajlirati?:)
Unesite string:
Unesite znak koji trazite:
Trazeni znak se u stringu pojavljuje 0 puta!
Nisu rađene nikakve dodatne provjere unosa.
Jel teško iskompajlirati?:)
Na mobitelu - da :)
Imam ja jedno pitanje vezano uz pointere. Pretpostavljam da:
atom *pomocni;
pomocni = *glava;
nije isto što i:
atom *pomocni = *glava;
atom je tip pointera, to nije ni bitno previše, a funkcija u kojoj piše ovo kao parametar prima **glava (zato *glava).
Uvijek gledaš po definicji. Ono s lijeve strane mora biti isto kao i ono s desne strane.
atom* pomocni = *glava
samo ako je *glava zapravo atom* (pointer, a ne dereferenciranje). Točnije, onda glava zapravo mora biti dvostruki pointer. Vrlo čest primjer u vezanim listama.
zdravo treba mi pomoć u vezi programa u c-u,,,, ako netko zna da mi da barem upute ,,,,, Unaprijed zahvalan!!!
Napraviti program kojii zracunava rjesenja jednadzbi
a11x1 + a12x2 =b1
a21x1 + a22x2 =b2
nepoznate su x1 i x2 koeficijenti a11,a12,b1,b2,a21,a22 se unose sa tastature, ako sistem jednadzbi nema rjesenjeprogram ispisuje poruku rjesenje ne postoji
Takoder treba ispisati odgovarajucu poruku ako sistem ima beskonacno mnogo rjesenja
Već je rješavan sličan zadatak tu na forumu, pregledaj teme (ili search).
Trebaš taj sustav riješit "na ruke", i iz njih dobit formule za x1,x2, koje onda samo ubaciš u kod.
npr prvu jednadžbu pomnožiš sa -a22 , drugu sa a12 pa ih zbrojiš i dobiješ jednadžbu samo sa x1, pa evo formule za njega.
A za slučajeve kad nema rješenja ili ih je beskonačno ima malo više posla, to proškicaj po forumu (mislim da sam ja stavio kod)
Nadam se da ste čuli za matematički pojam matrice i determinante. Znate ono ARRAY itd.
Nadam se da ste čuli za matematički pojam matrice i determinante. Znate ono ARRAY itd.
Ima na forumu baš primjer rješenja dviju jednadžbi sa dvije nepoznanice preko determinante, a ima i putem metode suprotnih koeficijenata
Ovo nek pročitaju http://www.vus.hr/Nastavni%20materijali/Matematika/6.predavanje-SUSTAVI%20LINEARNIH%20JEDNADZBI%20%281%29.pdf
pa onda i Cramerov sustav i metodu suprotnih koeficjanata postave u program, he,he, neće samo
Tu je rješeno:
Molio bih Vas za pomoc oko jednog zadatka.
Trebam u c-u napisat program koji bi preko unutarnjeg speekera izvodio zvukove po Morseovoj
abecedi za utipkana slova.
Iskreno neznam kako ni gdje poceti tak da bi svaka pomoć bila dobrodošla.
Hvala unaprijed.
Koliko se sjećam ovako nekako ide osnovni dio:
sound(frekvancija); // mislim da je max frekvencija 440
delay(trajanje); //ms
nosound(); // prekid zvuka
Sad ti kopaj dalje...
Tek sam počeo pa me muče neki osnovni problemi, mozete li mi reci jesu li mi tocna rjesenja, koje ce vrijednosti imati varijable x=5 i y=2 nakon izvrsavanja slijedecih naredbi:
a)
if (x>y)
x=y; else
y=x;
b)
if(x==y)
{
x++;
y+=x;
}
else
{ y--;
x+=y;
}
c)
if (x<y)
{
x=y;
y=x;
}
else
{
y++;
x=y;
}
Izgleda tocno, samo zasto ne napravis program i ne provjeris ?
To ti je par linija koda, samo dodas printf, i int main()
#include<stdio.h>
int x=4,y=5,d;
main()
{
d=(x%2==0)?y++:++y;
printf("%d",d);
}
#include<stdio.h>
int x=4,y=5,d;
main()
{
d=(x%2==0)?y++:++y;
printf("%d",d);
}
Comp nikad nefaliva :P
Koja je razlika izmedju ++y i y++, odgovorit si na to pitanje i skuzit ces zasto je 5 a ne 6
Ne znam jesam li u pravu ali mislim da bi ovako islo.
Da je umjesto x=4 bilo x=3 ne zadovoljava uvjet pa ce ici:
1.) d=++y prvo ce uvecati za 1 pa ce uzeti vrijednost znaci ovdje ce bti 6.
A sa x=4 zadovoljava uvjet pa ce ici:
2.)d=y++ prvo ce uzeti da je d =5 pa onda povecati za 1, sad zasto je ovdje 5 ako se na kraju povecava za 1.
Nadam se da sam ispravno shvatio.
Nadam se da sam ispravno shvatio.
yep, simple as that :)
Zanima me kod ovog slucaja kad imam ovo:
(2%7) jel li mi ostatak 2, i jel mi ostatak svaki broj umjesto dvice koji se stavi a da je manji od 7 npr. (3%7) ostatak 3, (5%7) ostatak 5, a za (23%7) ostatak 2.
Zanima me kod ovog slucaja kad imam ovo:
(2%7) jel li mi ostatak 2, i jel mi ostatak svaki broj umjesto dvice koji se stavi a da je manji od 7 npr. (3%7) ostatak 3, (5%7) ostatak 5, a za (23%7) ostatak 2.
Da, jest.
Ali zar je tako tesko provjeriti? Napises samo:
printf("%d\n", 2%7);
i imat ces bijelo na crnom, iz prve ruke, kako tocno stvari stoje.