C problemi, bre

Peruzzi

Domaćin
Banovan
Poruka
4.066
#include <stdio.h>

float radius, height, zap;
float Zap (float, float);

int main()
{
printf("Unesi redom precnik i visinu valjka\n");
scanf("%f\n%f\n", radius, height);
zap = Zap(radius, height);
printf("Zapremina je: %f", zap);

return 0;
}

float Zap (float radius, float height)
{
zap = (radius/2)*(radius/2)*height*3,14;
return zap;
}


sto nece da radi?

pokrenem program, ukucam prvi broj, i izbaci poruku - program has performed an illegal operation blablabla, send, dont send

pokrenem debug i izbaci -

Process 62C started
Thread 158 started
Loading untitled at 00400000
Loading ntdll.dll at 77F50000
Loading KERNEL32.dll at 77E60000
Exception: Access Violation

u onom dole delu gde izbacuje i rezultate kompajliranja, a zbaci i ovo exception: access violation u posebnom prozoru


wtf?


inace nece da mi se instalira visual studio...kaze nesto kao da sistem nije pogodan za pokretanje ms dos aplikacija. isto i za turbo pascal...
 
Ovo radi:

float Zap (float, float);
float zap;

int main()
{


Ovo radi...
float radius, height;
printf("Unesi redom precnik i visinu valjka\n");
scanf("%f%f", &radius, &height);

zap = Zap(radius, height);
printf("Zapremina je: %f\n", zap);

return 0;
}

float Zap (float radius, float height)
{
zap = (radius/2)*(radius/2)*height*3.14;
return zap;
}
 
Globalna varijabla je ona koja se moze koristiti bilo gdje, dakle i u funkcijama i mainu itd, i ako ponovo u funkciji pokusas deklarisati varijablu istog imena dobit ces gresku, dok kod lokalnih, dakle samo unutar neke funkcije, bilo main ili neke druge i mozes isto ime davati recimo int broj u dvije i vise funkcija, a greske nece biti.
 
Sucur:
Globalna varijabla je ona koja se moze koristiti bilo gdje, dakle i u funkcijama i mainu itd, i ako ponovo u funkciji pokusas deklarisati varijablu istog imena dobit ces gresku, dok kod lokalnih, dakle samo unutar neke funkcije, bilo main ili neke druge i mozes isto ime davati recimo int broj u dvije i vise funkcija, a greske nece biti.

???

Kod:
int a = 0; // globalna

int main(int argc, char* argv[])
{

    int a = 5;   // 'a' chiji je scope 'main' funkcija, tj. lokalna za main(), ali sa istim imenom
    ::a = 3;     //  'a' koji ima globalni scope, uz 'scope-resolution'.... ove dve promenljive NISU iste!

    return 0;
}
 
Lord British:
???

Kod:
int a = 0; // globalna

int main(int argc, char* argv[])
{

    int a = 5;   // 'a' chiji je scope 'main' funkcija, tj. lokalna za main(), ali sa istim imenom
    ::a = 3;     //  'a' koji ima globalni scope, uz 'scope-resolution'.... ove dve promenljive NISU iste!

    return 0;
}
Pa rekao sam za bilo koju funkciju, bilo main ili neke druga.
 
Sucur:
E da, sad sam vidio da se ponasa kao nova varijabla, a bez deklaracije, koristi vrijednost globalne.
Rijetko koristim globalne tako da neznam bas mnogo o njihovom ponasanju u razlicitim uslovima.
necu da budem los, ali nije poenta pokazati ko najvise zna, vec prosto odgovoriti na pitanja, ako i ko zna.
 
E da ja vas nesto priupitam.Neznam ja c nista posebno,ucio sam iz nekih tutrila na eng. al ono sa CASE petljom nista nerazumem-nece da workuje kako valja i dolikuje jednoj petlji....Npr


#include<stdio.h>
#include<stdlib.h>

main () {
////////////////////////////////////////////////////
double broj1,broj2;
char znak;
char ulbaf1[15],ulbaf2[15];
////////////////////////////////////////////////////
printf("Prvi broj: ");
gets(ulbaf1);
broj1=atof(ulbaf1);

printf("daj drugi broj: ");
gets(ulbaf2);
broj2=atof(ulbaf2);

printf("Koja operacija(+,-,*,/): ");
znak=getchar();
////////////////////////////////////////////////////
switch (znak) {
case '+' :
printf("Zbir je %lf",broj1 + broj2); broj1=getchar() ; break; //e ovo broj1=getchar() sam stavio samo da se prozorce nebi zatvorilo....A ono se zatvori.STO TO?
case '-' :
printf("Razlika je %lf",broj1-broj2); broj1=getchar() ; break;
case '*' :
printf("Proizvod je %lf",broj1*broj2); broj1=getchar() ; break;
case '/' :
printf("Kolicnik je %lf",broj1/broj2); broj1=getchar() ; break;
default:
printf("nepoznat znak %s",znak); broj1=getchar() ; break ;}
/////////////////////////////////////////////////////
}
E sto samo ispise ono zbir je taj i taj i odma se zatvori prozor.Nije bitno to sto se zatvori prozorce nego onda valjda nece uraditi nista sto ja tu napisem....Dajte objasniti to pleasy
 
Hm, neznam sta ti nije jasno, program je potpuno funkcionalan i ispravan, dakle ti udjes u switch odabirom opcije, odabrana opcija se izradi (ispise rezultat), nailazi na break; i izlazi iz switch petlje i tu se program zavrsava. Ako ne zelis da se odmah gasi tj. zelis da vidis taj rezultat idi preko debug-a, ili stavi system("PAUSE") na kraju koda ili mozes i getchar() funkciju.
 
Stvar je u sledecem:
Ako napisem
#include<stdio.h>
main() {
int broj1,broj2;
broj1=getchar() ;
broj2=getchar(); }
Samo ce pojavi da unesem prvi broj a drugi ne....Mislim sta god na napisem posle
broj1=getchar() ; nece da se uradi....A sto to ? Pokusavam da ucim C ali ovo je frustrirtajuce!!!

I jos jedno pitanje: atoi() konvertuje nesto u integer a atof u single-jel ima nesto tome slicno za konvertovanje u string?

E da,imam neki Miracle C kompajler.Jel valja on?
 
toxi:
Stvar je u sledecem:
Ako napisem
#include<stdio.h>
main() {
int broj1,broj2;
broj1=getchar() ;
broj2=getchar(); }
Samo ce pojavi da unesem prvi broj a drugi ne....Mislim sta god na napisem posle
broj1=getchar() ; nece da se uradi....A sto to ? Pokusavam da ucim C ali ovo je frustrirtajuce!!!

I jos jedno pitanje: atoi() konvertuje nesto u integer a atof u single-jel ima nesto tome slicno za konvertovanje u string?

E da,imam neki Miracle C kompajler.Jel valja on?
Vidi za takve stvari nemoj koristiti getchar(), vec standardni cin iliti scan. Evo ti primjer:
#include <iostream>
using namespace std;
int main() {
int broj1,broj2;
cin >> broj1; ;
cin >> broj2;
}

atoi() je funkcija koja konvertuje string u integer.
atof() konvertuje string u float.
itoa() ti konvertuje integer u string.
A sto se tice tog kompajlera neznam kakav je, ja bih ti savjetovao da nabavis VisualStudio NET, i obavezno sa njim MSDN
 
imam opet pitanje:
#include<stdio.h>
#include<stdlib.h>

int
main (void)
{
char rec1;
rec1="t";

if (rec1=="t") printf("Uslov je ispunjen");
else printf("Uslov nije ispunjen");

}

Kako to da uslov nije ispunjen kad bi realno bilo da jeste?
 
HVALA
A ako unesem vise od jednog slova pise da je karakter predug.Sta onda?
Kako da sabiram dva stringa koji nisu brojevi tj. da jednoj reci dodam jos neku rec(ne ako je string broj nego ako neki levi niz znakova).
I gde da nadjem taj MSDN?
 
C nema ugradjenu podrshku za stringove u sam jezik. Za to ti trebaju funkcije u string.h hederu : strlen(), strcat(), strstr() i josh gomila drugih, pogledaj u helpu koji imash uz kompajler sve funkcije koje pochinju sa "str".

MSDN ne morash ni da imash na disku, ako imash iole dobru net konekciju, sav help iz MSDN-a je na http://msdn.microsoft.com . Inache, MSDN stizhe uz VisualStudio.
 

Back
Top