Quantcast

Korisicke funkcije??

Fidelito_Castro

Obećava
Poruka
62
Zamolio bih vas za pomoc oko ovog koda???
Ne mogu da izvrsim povezivanje,a ne znam gde mi je greska?

Kod:
/*Program koji ce na osnovu unese reci ispitati duzinu karaktera
i nakon toga u zavisnosti od broja karaktera ispisati faktorijel karaktera */

#include<stdio.h>
#include<string.h>
#define MAKS 20

/*Protoripi funkcija */
int duzinaf(char stringf[MAKS+1]);
int faktorijelf(int *duzina2);

/*Globalne promenljive*/

char string[MAKS+1];
int i;
int duzina;
int faktorijel;
/*Pocetak funkcije main */
int main(void){
        
        //Unos stringa preko makroa
        puts("Unesite neki tekst");
        gets(string);
        duzina=duzinaf(string);
        printf("Rec"%s" ima %d karaktera",string,duzina);
        faktorijel=faktorijelf(&duzina);
        printf("Faktorijel od %d karaktera iznosi %d",duzina,faktorijel);
    
}

/*Definisanje funkcije duzinaf */

int duzinaf(char stringf[MAKS+1])
{
    int duz;

    duz=strlen(stringf);
    return duz;
}

/*Definisanje funckije faktorijelf*/

int faktorijelf(int *duzina2)
{
    return (*duzina2) * faktorijelf ((*duzina2)-1);
    
}
Unapred zahvalan!
 
Poruka
13.206
1- Meni izgleda da ti je greška u f-ji faktorijelf(). Ne vidim zašto si morao ovako da je zakomplikuješ.
Jedan prost FOR loop bi rešio to očas posla i bilo bi jasnije i 'čitljivije'.
Nisam baš siguran šta pitaš, da li neće da ti linkuje ili ne vraća rezultat kako treba?
2- int main(void) - f-ja treba da ima return ali ga nigde nisi odradio, dakle na kraju main() ubaci
nešto kao return 1; ili whatever.
3- nije mi jasno zašto si pisao f-ju duzinaf() ??? strlen(stringf[MAKS+1]) ti vraća isti INT kao i f-ja.
-----------------------
-Linija: printf("Rec "%s" ima %d karaktera",string,duzina); treba da izgleda ovako:
printf("Rec %s ima %d karaktera",string,duzina);
-Funkciju faktorijalf() ja bih napisao ovako:
Kod:
int faktorijelf(int duzina2)
{
     long int t=1;
     for (i=1;i<=duzina2;i++)
     {
          t*=i;
     }
     return t;
}
-------------------------
U stvari ne znam da li ti hoćeš matematički faktorijel ovom funkcijom, samo pretpostavljam... (
Verovatno cak i ima f-ja u math.h ali je bespotrebno uključivanje te biblioteke s obzirom na prostoću f-je.
 
Poruka
13.206
BTW f-ja koju si upisao kao faktorijelf se vodi kao maliciozni kod.
Iz nje se nikada neće izaći. Treba ubiti taj proces i onda će ponovo da linkuje.
Evo ti kompletan source programa koji radi.
Kod:
#include<stdio.h>
#include<string.h>
#define MAKS 20

int duzinaf(char stringf[MAKS+1]);
int faktorijelf(int duzina2);

char string[MAKS+1];
int i;
int duzina;
int faktorijel;

int main(void)
{        
        puts("Unesite neki tekst");
        gets(string);
        duzina=duzinaf(string);
        printf("Rec %s ima %d karaktera\n",string,duzina);
        faktorijel=faktorijelf(duzina);
        printf("Faktorijel od %d karaktera iznosi %d\n",duzina,faktorijel);
        return 1;
}

int duzinaf(char stringf[MAKS+1])
{
    int duz;
    duz=strlen(stringf);
    return duz;
}

int faktorijelf(int duzina2)
{
     long int t=1;
     for (i=1;i<=duzina2;i++) t*=i;
     return t;
}
Probaj promeni iz Release u Debug ili obratno i to će biti u redu takođe što se tiče linkovanja.
Mada bi proces trebao 'ubiti' u svakom sl. :)
 

toxi

Zainteresovan član
Poruka
379
Нема, зато што то није Мајкрософтов "фајл".

Можеш да скинеш са нета. Наравно требају ти и они .lib фајлови уз header.
 

Top
  Blokirali ste reklame
Dragi prijatelju, nemojte da blokirate reklame - isključite Ad Blocker na Forumu, jer će tako mesto vaših susreta na Krstarici ostati besplatno za korišćenje.