problemik s funkciou v c

Programovacie jazyky, rady, poradňa...
sun0oc
Zablokovaný
Zablokovaný
Príspevky: 14
Registrovaný: 14 jún 2009, 13:07

problemik s funkciou v c

Príspevok od používateľa sun0oc »

zdravim, som uz zufaly. mam jednoduchu funkciu na overenie, ci vsetky znaky v stringu (pole charov) su cisla. overuje to jednoducho porovnavanim ascii tabulky v cykli. normalne v maine mi to funguje ale vo funkcii uz nie. viem ze sa to da robit cez pointre ale tie neovladam a iny sposob mi nejde. dakujem. :cry:

Kód: Vybrať všetko

int overenie_ciselneho_retazca(char znak) {
     
         int i, dlzka_retazca;
         int spravnost_znakov = -1;

         dlzka_retazca = strlen(znak)-1;

         for (i=0;i<=dlzka_retazca;i++) {
             if (znak[i]>=48 && znak[i]<=57) {
             spravnost_znakov++;
             }
         }
         
         if (spravnost_znakov == dlzka_retazca) {
         return 1;                     
         } else {
         return 0;       
         }
         
}

int main () {
    
         char znak[50];
         
         printf("zadaj znak: ");
         scanf("%s",&znak);
         
         if (overenie_ciselneho_retazca(znak)) { 
         printf("je znak");
         } else {
         printf("nie je znak");
         }
         
         
         sleep(60000);
         return 0;
}
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Príspevok od používateľa c-ice »

trocha mylné píšeš zadaj znak a očakávaš zadat retazec znakov

lebo do funkcie posielas jeden jediny znak pozri sa ako mas deklarovany vstupný parameter funkcie

na toto overenie existuju aj funkcie
sun0oc
Zablokovaný
Zablokovaný
Príspevky: 14
Registrovaný: 14 jún 2009, 13:07

heh

Príspevok od používateľa sun0oc »

jasne, vsak stacilo dat char[50] ako vstup

sorry, programujem tu seminarku uz pat hodin a poriadne mi to nemysli. dakujem krasne :-)
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Príspevok od používateľa johny3212 »

nie, stcilo tam dat ukazovatel :0
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Príspevok od používateľa reDo »

ked uz je tu tema o c mam program ale nwm preco to nefunguje ma to byt quazy keygen ale neche mi to premennu x vypisovat ako znak ale nwm preco pls poradte, kontrolujem cisla preto aby som mal v kodoch iba od A-Z a 0-9

Kód: Vybrať všetko

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





int main(void)			
{
  FILE *f;
  
  int pocet=0;
  int x;



 
  srand((unsigned) time(NULL));
  f=fopen("key.txt", "a");
  fprintf(f, "KEY: ");
  while(pocet!=20) { 
    x=rand() % 91; 
    
    if(x<=57&&x<=90&&x>=48&&65>=x) 
    {
    printf("%c %c", x, a);
    fprintf(f, "%c",x);
    if(pocet%4==0&&pocet!=0)
    fprintf(f," ");
    if(pocet%4==0&&pocet!=0)
    printf(" ");
    pocet++;
    }
    else
    continue;


}
  
  
  fprintf(f, "\n");
  fclose(f);
  system("PAUSE");
  return 0;
}


audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

skôr by som povedal že tam kompilátoru vadí to áčko:

Kód: Vybrať všetko

printf("%c %c", x, a); 
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

Kód: Vybrať všetko

    if(x<=57 && x<=90 && x>=48 && x<=65) 
X podla tejto podmienky moze byt mensie ako 57 a vacsie ako 48 :?:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

BX napísal:

Kód: Vybrať všetko

    if(x<=57 && x<=90 && x>=48 && x<=65) 
X podla tejto podmienky moze byt mensie ako 57 a vacsie ako 48 :?:
takých čísel poznám až 9 :) z tej úúúúplne zlej podmienky si vypichol to ešte ako-tak dobré

//edit: mala by byť ((x<=57 && x>=48) || (x<=90 && x>=65))
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Príspevok od používateľa reDo »

j dakujem prepacte za omyl to a som zmazal len ked som to tu chcel dat inak to nebola chyba :oops:

//autoeditácia príspevku ( 18 Dec 2009, 21:28 )
dobre takze je to upravene ale nwm preco mi to namiesto 5x4 znaky vypisuje 1x5 2x4 1x3 znaky pls co s tym? :roll:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

namiesto int pocet=0; daj int pocet=1;
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Príspevok od používateľa reDo »

dakujem uz to ide ako som si predstavoval :)
fero_zezina
Amateur
Amateur
Príspevky: 34
Registrovaný: 02 dec 2007, 10:03

Re: problemik s funkciou v c

Príspevok od používateľa fero_zezina »

... to mi pripomina... semestralku z algoritmizacie uloh... od nas zo skupiny, tipujem ze blbuvzdornu semestralku nemal takmer nikto...

ta pre buducnost , pouzit kniznicu ctype.h a funkciu isdigit(). ale aj takto je to dobre :D
Napísať odpoveď