C problem

poruka: 8
|
čitano: 1.979
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
C problem

imam jedan problem s programom u c programskom jeziku, naime za svaku naredbu koju mu zadam ispiše da nezna i izbaci prozorčić da nevalja naredba (ja sam mu zado da to napravi)...kako se to može ispravit a da nemoram mijenjat riječi brojevima? vrlo je vazno da korisnik upisuje rjeci, ne brojeve...

kod:

  #include <stdio.h>
#define true 1
#define false !true

int datum (void);
int vrijeme (void);
void napuni ( char *slovo0, char *slovo1, char *slovo2, char *slovo3, char *slovo4, char *slovo5, char *slovo6, char *slovo7, char *slovo8, char *slovo9 )
{
scanf ("%s %s %s %s %s %s %s %s %s %s", slovo0, slovo1, slovo2, slovo3, slovo4, slovo5, slovo6, slovo7, slovo8, slovo9);
}

int main()
{
char naredba[10];
float lozinka;
float broj1;
float broj2;
float broj3;
float broj4;
float broj5;
float broj6;
float broj7;
FILE *bono;
broj2 = 30;
broj3 = 5*2;
broj4 = broj2 * broj3;
broj5 = broj4 * broj2;
broj6 = 10;
broj7 = broj3 * broj4;
broj1 = broj2*broj3*broj4+broj5-broj6+broj7;
bono: printf ("provali>");
scanf ("%s", &naredba);
if (naredba == "lozinka")
{
scanf ("%f", &lozinka );
}
else if (naredba == "pomoc")
{
printf ("popis funkcija:\nlozinkahak\tzapisujhak\tvrijemehak\tdatumhack\tizadihaker\nukoliko vas vise zanima o nekoj funkciji, upisite ?\"imefunkcije\"?\n");
goto bono;
}
else if (naredba == "datum")
{
datum ();
goto bono;
}
else if (naredba == "vrijeme")
{
vrijeme ();
goto bono;
}
else if (naredba == "zapisuj")
{
bono = fopen ("zapis.txt", "a");
fprintf (bono, "%f\t", lozinka);
goto bono;
}
else if (naredba == "izadi")
{
return 0;
}
else
{
system ("start poruka.bat");
printf ("nekontam sta ti je ovo trebalo znacit, probaj s necim drugim...\n");
goto bono;
}
if ( lozinka == broj1+broj2+broj3+broj4+broj5+broj6+broj7)
{
printf ("Ti si cool...svaka cast, rjesio si tocno faco...\n");
return 0;
}
else
{
printf ("Probaj opet, nisi uspio...\n");
lozinka = 0;
goto bono;
}
}

int datum ()
{
system ("date");
return 0;
}

int vrijeme ()
{
system ("time");
return 0;
}

thunder in my room :prijevod: Moja mama viče!92% tinejđera sluša turbo folk. Ako si ti među onih 8% koji još uvijek slušaju pravu glazbu kopiraj si ovo u potpis.Da se Facebook server sruši 90% m
 
0 0 hvala 0
16 godina
neaktivan
offline
C problem

Mali savjet: nikad nikad nikad nemoj koristiti goto

i koristi switch umjesto tonu if else.

 
0 0 hvala 0
16 godina
neaktivan
offline
C problem

Tipična greška. Ne, ne, školski primjer tipične greške. Kad se govori o tipičnim greškama, ova se spomene!

 

Ugl., stringove ne uspoređuješ kao brojeve (i poneke druge tipove, no da ne kompliciram... :D), već funkcijom strcmp (cstring zaglavlje, uključi na početku ako nisi). Ako su jednaki, ona će vratiti vrijednost 0.

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
15 godina
neaktivan
offline
C problem

e hvala, nisam se mogo sjetit kako se ta funkcija zove...i mislio sam da bi to mogo bit razlog...nego, da onda to napravim ovako:

int n;

n = strcmp (naredba, "lozinka");

...

if (n = 0)

{

...}

  ?

EDIT: i još sam htio pitat jel si siguran da je cstring.h (a ne string.h), jer kompajler mi javlja da nepostoji cstring.h?

 

thunder in my room :prijevod: Moja mama viče!92% tinejđera sluša turbo folk. Ako si ti među onih 8% koji još uvijek slušaju pravu glazbu kopiraj si ovo u potpis.Da se Facebook server sruši 90% m
Poruka je uređivana zadnji put sub 12.12.2009 18:43 (Capitan Hook).
 
0 0 hvala 0
16 godina
neaktivan
offline
C problem

A, u Cu radiš. Onda string.h (inače, ne bi bio cstring.h, nego baš kako sam napisao, "cstring").

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
15 godina
neaktivan
offline
C problem

a dali se može s tim provjeravat je li sadržaj varijable jedank nekoj riječi?

i ako ne, s kojom se funkcijom može?

thunder in my room :prijevod: Moja mama viče!92% tinejđera sluša turbo folk. Ako si ti među onih 8% koji još uvijek slušaju pravu glazbu kopiraj si ovo u potpis.Da se Facebook server sruši 90% m
 
0 0 hvala 0
16 godina
neaktivan
offline
C problem

Da, naravno, pa zato sam i napisao njen naziv.

The candle flame gutters. Its little pool of light trembles. Darkness gathers. The demons begin to stir.
 
0 0 hvala 0
15 godina
neaktivan
offline
RE: C problem

e, hvala na pomoči, stvarno si me spasio s tom funkcijom...kod od mog programa je:


  #include <stdio.h>
#include <string.h>
#define true 1
#define false !true

int datum (void)
{
system ("date");
return 0;
}
int vrijeme (void)
{
system ("time");
return 0;
}
void napuni ( char *slovo0, char *slovo1, char *slovo2, char *slovo3, char *slovo4, char *slovo5, char *slovo6, char *slovo7, char *slovo8, char *slovo9 )
{
scanf ("%s %s %s %s %s %s %s %s %s %s", slovo0, slovo1, slovo2, slovo3, slovo4, slovo5, slovo6, slovo7, slovo8, slovo9);
}

int main()
{
struct naredbe
{
int lozinka;
int pomoc;
int kod;
int pozvoni;
int vrijeme;
int datum;
int zapisi;
int izadi;
int kalkulator;
int ucitaj;
}vise, provjera;
FILE *datoteka;
char naredba[10], da_stavim[5];
int izbor;
float lozinka, ucitano;
float broj1;
float broj2;
float broj3;
float broj4;
float broj5;
float broj6;
float broj7;
FILE *bono;
broj2 = 30;
broj3 = 5*2;
broj4 = broj2 * broj3;
broj5 = broj4 * broj2;
broj6 = 10;
broj7 = broj3 * broj4;
broj1 = broj2*broj3*broj4+broj5-broj6+broj7;
bono: printf ("provali>");
scanf ("%s", &naredba);
provjera.ucitaj = strcmp (naredba, "ucitaj");
provjera.kalkulator = strcmp (naredba, "kalkulator");
provjera.lozinka = strcmp (naredba, "lozinka");
provjera.pomoc = strcmp (naredba, "pomoc");
provjera.vrijeme = strcmp (naredba, "vrijeme");
provjera.izadi = strcmp (naredba, "izadi");
provjera.datum = strcmp (naredba, "datum");
provjera.zapisi = strcmp (naredba, "zapisi");
provjera.pozvoni = strcmp (naredba, "pozvoni");
vise.ucitaj = strcmp (naredba, "?ucitaj?");
vise.kalkulator = strcmp (naredba, "?kalkulator?");
vise.lozinka = strcmp (naredba, "?lozinka?");
vise.pomoc = strcmp (naredba, "?pomoc?");
vise.vrijeme = strcmp (naredba, "?vrijeme?");
vise.izadi = strcmp (naredba, "?izadi?");
vise.datum = strcmp (naredba, "?datum?");
vise.zapisi = strcmp (naredba, "?zapisi?");
vise.pozvoni = strcmp (naredba, "?pozvoni?");
if (vise.pozvoni == 0)
{
printf ("pozvoni 3x, nije preporucljivo koristit u kasnim nocnim satima...\n");
goto bono;
}
else if (vise.ucitaj == 0)
{
printf ("Ucitava broj koji ste unjeli u kalkulatoru.\nAko zelite da vam ga pohrani kao lozinku, nakon sto vam to ponudi upisite da, ako ne, upisite bilo koji rijec od 5 ili manje slova...\n");
goto bono;
}
else if (vise.kalkulator == 0)
{
printf ("Pokrece program kalkulator.\n");
goto bono;
}
else if (vise.zapisi == 0)
{
printf ("U file zapis.txt upisuje lozinku koju ste zadnju probali...\n");
goto bono;
}
else if (vise.datum == 0)
{
printf ("Ispisuje na ekran današnji datum....\nNapomena, radi samo na MS i dos sustavima...\n");
goto bono;
}
else if (vise.izadi == 0)
{
printf ("Izlazi vam iz programa.\nNapomena, radi samo na MS i dos sistemima...\n");
goto bono;
}
else if (vise.vrijeme == 0)
{
printf ("Ispisuje na ekranu koliko je sati.\nNapomena, radi samo na MS i dos sistemima...\n");
goto bono;
}
else if (vise.pomoc == 0)
{
printf ("Ispisuje vam mogucnosti ovog programa.\n");
goto bono;
}
else if (vise.lozinka == 0)
{
printf ("Kada upisete ovu naredbu, trebate unjet brojeve za koje mislite da su lozinka...\n");
goto bono;
}
if (provjera.lozinka == 0)
{
scanf ("%f", &lozinka );
}
else if (provjera.ucitaj == 0)
{
datoteka = fopen ("kalkulator\\meduspremnik.txt", "r");
fscanf (datoteka, "%f", &ucitano);
printf ("Ucitao sam %f.\nDa to stavim kao lozinku?\n", ucitano);
scanf ("%s", &da_stavim);
izbor = strcmp (da_stavim, "da");
switch (izbor)
{
case 0:
lozinka=ucitano;
break;
case !0:
printf ("ok, necu...\n");
goto bono;
break;
}
goto bono;
}
else if (provjera.kalkulator == 0)
{
system ("start kalkulator\\kalkulator.bat");
goto bono;
}
else if (provjera.pomoc == 0)
{
printf ("popis funkcija:\nlozinka\tzapisi\tvrijeme\tdatum\tucitaj\tizadi\tpozvoni\nukoliko vas vise zanima o nekoj funkciji, upisite ?\"imefunkcije\"?\n");
goto bono;
}
else if (provjera.datum == 0)
{
datum ();
goto bono;
}
else if (provjera.vrijeme == 0)
{
vrijeme ();
goto bono;
}
else if (provjera.zapisi == 0)
{
bono = fopen ("zapis.txt", "a");
fprintf (bono, "%f\t", lozinka);
goto bono;
}
else if (provjera.izadi == 0)
{
return 0;
}
else if (provjera.pozvoni == 0)
{
printf ("\a\a\aZar nije cool?\n");
goto bono;
}
else
{
system ("start poruka.bat");
printf ("nekontam sta ti je ovo trebalo znacit, probaj s necim drugim...\n");
goto bono;
}
if ( lozinka == broj1+broj2+broj3+broj4+broj5+broj6+broj7)
{
printf ("Ti si cool...svaka cast, rjesio si tocno faco...\n");
return 0;
}
else
{
printf ("Probaj opet, nisi uspio...\n");
lozinka = 0;
goto bono;
}
return 0;
}

  i od drugog djela, kalkulatora:

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

int main()
{
float x, y, zbrajanje, oduzimanje, mnozenje, dijeljenje;
int jos_2;
char opcije[10], rijec[5];
FILE *bono;
bono = fopen ("meduspremnik.txt", "w");
ponavljanje: printf ("Unesite 2 broja.\n");
scanf ("%f %f", & x, &y);
printf ("Ok...sad napisite sta zelite raditi.\n");
scanf ("%s", &opcije);
zbrajanje = strcmp (opcije, "zbrajat");
oduzimanje = strcmp (opcije, "oduzimat");
mnozenje = strcmp (opcije, "mnozit");
dijeljenje = strcmp (opcije, "dijelit");
if (zbrajanje == 0)
{
printf ("%f\n", x+y);
fprintf (bono, "%f\n", x+y);
printf ("Zelite li jos nesto raditi?\n");
scanf ("%s", &rijec);
jos_2 = strcmp (rijec, "da");
switch (jos_2)
{
case 0:
goto ponavljanje;
break;
case !0:
printf ("Shvatit cu to kao ne...\n");
break;
}
jos_2 = 0;
}
else if (oduzimanje == 0)
{
fprintf (bono, "%f\n", x-y);
printf ("%f\n", x-y);
printf ("Zelite li jos nesto raditi?\n");
scanf ("%s", &rijec);
jos_2 = strcmp (rijec, "da");
switch (jos_2)
{
case 0:
goto ponavljanje;
break;
case !0:
printf ("Shvatit cu to kao ne...\n");
break;
}
jos_2 = 0;
}
else if (mnozenje == 0)
{
fprintf (bono, "%f\n", x*y);
printf ("%f\n", x*y);
printf ("Zelite li jos nesto raditi?\n");
scanf ("%s", &rijec);
jos_2 = strcmp (rijec, "da");
switch (jos_2)
{
case 0:
goto ponavljanje;
break;
case !0:
printf ("Shvatit cu to kao ne...\n");
break;
}
jos_2 = 0;

}
else if (dijeljenje == 0)
{
fprintf (bono, "%f\n", x/y);
printf ("%f\n", x/y);
printf ("Zelite li jos nesto raditi?\n");
scanf ("%s", &rijec);
jos_2 = strcmp (rijec, "da");
switch (jos_2)
{
case 0:
goto ponavljanje;
break;
case !0:
printf ("Shvatit cu to kao ne...\n");
break;
}
jos_2 = 0;

}
else
{
printf ("Govori na matematickom, nisam razumio sta si htio...\n");
printf ("Zelite li jos nesto raditi?\n");
scanf ("%s", &rijec);
jos_2 = strcmp (rijec, "da");
switch (jos_2)
{
case 0:
goto ponavljanje;
break;
case !0:
printf ("Shvatit cu to kao ne...\n");
break;
}
jos_2 = 0;

}
return 0;
}

ima još djelova u batchu, ali to su 2 linijski fajlići...stvarno hvala na pomoći...

thunder in my room :prijevod: Moja mama viče!92% tinejđera sluša turbo folk. Ako si ti među onih 8% koji još uvijek slušaju pravu glazbu kopiraj si ovo u potpis.Da se Facebook server sruši 90% m
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice