Keresés

Új hozzászólás Aktív témák

  • Steve-S

    tag

    Hi mindenkinek!

    Egy kis segítség kéne! ANSI C-ben kellene egy olyan programot csinálnom, hogy egy előjel nélküli egész számot beolvastatok, és ki kell iratni a számot az adott számrendszerben. Ez 2-es számrendszertől 9-esig lehet. Van olyan függvény amivel ezt meg lehetne oldani?

    Elkezdtem, eddig itt járok, már csak a függvény kéne bele, de azt nem tudom hogy kéne, eléggé láma vagyok még a C-hez. Pls segítsetek ezt estig meg kéne oldanom, kötelező feladat, de valahogy nem boldogulok vele! :O

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

    int main(void)
    {
    unsigned int a,b;
    printf("Adj meg egy egész számot: ");
    scanf("%d",&a);
    printf("Adj meg egy számrendszert (2-9): ");
    scanf("%d",&b);

    if(b<2 || b>9)
    {
    printf("Nem jó számrendszert adtál meg!");
    exit(-1);
    }
    }

    [ Szerkesztve ]

    Set The World On Fire!!!

  • Steve-S

    tag

    válasz Lortech #74 üzenetére

    char *valto(unsigned int a, unsigned int b)
    {
    char *result;
    int n=floor(log(a)/log(2)+1);
    int i=0;
    result=(char *)malloc((n+1)*sizeof(char));
    do
    {
    a%b=result[n-i-1];
    a/=b;
    i++;
    }
    while(a!=0)
    return result;
    }

    Erről mit gondolsz? Nemfordítja le mert valami kínja van.
    int n=floor(log(a)/log(2)+1);
    Ez a sor elvileg azt csinálja hogy kiszámítja a tömb méretét (múlt órai feladatból van).

    Set The World On Fire!!!

  • Steve-S

    tag

    Ha ezt megmondja nekem valaki hogy miért nem működik normálisan ez a programom, akkor megközönném! Fordításnál semmi hiba nincs. Átnéztem már 100x az egészet de nem tudom mi a hiba. A feladat hogy bekérek egy egész számot, és átváltja a megadott számrendszerbe (2-9). A feladatot ily módon kell megoldani ahogy megcsináltam, tehát ne írjátok át ha lehet, csak nem tudom hogy miért nem működik megfelelően. Eredménynek csak hülye összevissza karaketerket ad ki.

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

    char *valto(unsigned int szam, unsigned int szr)
    {
    char *eredmeny;
    int n=floor(log(szam)/log(szr)+1);
    int i=0;
    eredmeny=(char *)malloc((n+1)*sizeof(char));

    while(szam>0)
    {
    eredmeny[n-i-1]=szam%szr;
    szam/=szr;
    i++;
    }

    eredmeny[n]=0;
    return eredmeny;
    }

    int main(void)
    {
    unsigned int a,b;
    char *kesz=NULL;

    printf("Adj meg egy egesz szamot: ");
    scanf("%d",&a);
    printf("Adj meg egy szamrendszert (2-9): ");
    scanf("%d",&b);

    if(b<2 || b>9)
    {
    printf("\nNem jo szamrendszert adtal meg!\n");
    exit(-1);
    }

    kesz=valto(a,b);

    if(kesz) puts(kesz);
    if(kesz) free(kesz);

    return 0;
    }

    Set The World On Fire!!!

  • Steve-S

    tag

    Hi mindenkinek! Újabb kérdésem lenne. Egy olyan függvényt kell írnom ami egy előreinicializált mátrixot(ékezet nélküli szavakkal töltöm fel), névsor szerint rendez. Az algoritmus meg a lényeg megvan, de úgy kell csinálni hogy a fgv paramétere char ** típusú legyen. Na most ezt kellene nekem elmagyarázni hogy ez a dupla csillagos modszer hogy működik, pl. hogy hogy töltöm fel így a mátrixot ha ilyen típussal kell, mert ez sem sikerült még. Lehet kicsit láma kérés de nem igazán vágom. Ha valaki elmagyarázná jó lenne. :F Köszi!

    Set The World On Fire!!!

  • Steve-S

    tag

    Nah megvan, márcsak azt mondja meg valaki hogy miért fagy ki ez a program egyből miután elindítom? Fordításnál semmi hiba, függvény is elvileg jó! Akkor mi lehet a gond? :F

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

    void rendez(char **matrix)
    {
    int i, j;
    char ideiglenes[20];

    for(i = 0; i < 10; i++)
    for(j = 0; j < 10; j++)
    {
    if (strcmp(matrix[i], matrix[j]) < 0)
    {
    strcpy(ideiglenes, matrix[i]);
    strcpy(matrix[i], matrix[j]);
    strcpy(matrix[j], ideiglenes);
    }
    }
    printf("\nRendezve: \n\n");
    for(i = 0; i < 10; i++)
    printf("%s\n",matrix[i]);

    }

    int main(void)
    {

    char *automarkak[10];
    automarkak[0]="Mercedes";
    automarkak[1]="Ferrari";
    automarkak[2]="Audi";
    automarkak[3]="Lada";
    automarkak[4]="Chevrolet";
    automarkak[5]="Ford";
    automarkak[6]="Skoda";
    automarkak[7]="Suzuki";
    automarkak[8]="Opel";
    automarkak[9]="Chrysler";

    rendez(automarkak);
    }

    Set The World On Fire!!!

  • Steve-S

    tag

    Hi all!

    A kérdésem:
    Van egy függyvény definíció: double tombatlag(double *tomb)
    ez kiszámítaná a tömb eleminek az átlagát és visszaadja azt. Azt nem tudom hogy hogy kellene az elem összeadó ciklusnak megadni azt hogy meddig menjen, magyarán mennyi a tömb mérete, vagy hogy hol van a tömb vége, anélkül hogy ezt megadnánk a függvénynek paraméterként, vagy a ciklusváltozóban beírnám a feltételnél az elemszámot?
    Itt van egy példa amelyben kiszámolja amennyiben tudom a tömb méretét, de nekem az a verzió kéne mikor nem tudom előre a méretet. Egyáltalán van erre valamilyen módszer C-ben? Sok mindent próbálgattam már, de eddig nem volt jó semmi. :(

    double tombatlag(double *tomb)
    {
    double osszeg=0;
    int j, db=0;

    for(j=0;j<5;j++)
    {
    osszeg += *tomb++;
    db++;
    }

    return osszeg/db;
    }

    Set The World On Fire!!!

  • Steve-S

    tag

    válasz doc #642 üzenetére

    Akkor csak jól sejtettem :DDD De ez mi szar mán nem? :W

    Set The World On Fire!!!

  • Steve-S

    tag

    válasz cellpeti #676 üzenetére

    Hi! Itt az én verzióm, bár lehet nem a legtökéletesebb, nem vagyok valami nagy prof C-ből, de működik! Bár lehet már kicsit későn postolom. :B Azért remélem segítettem valamit.

    #include <stdio.h>

    int getline(char t[],int lim)
    {
    int i;
    char c;
    for(i=0; i<lim && (c=getchar())!=EOF && c!='\n'; i++)
    t[i]=c;

    return i;
    }

    main()
    {
    int s, i, osszeg, szamok;
    char tomb[20];

    printf("Adj meg egy 6 szamjegyu kodot: ");

    while((s=getline(tomb,20))!=0)
    {
    osszeg=0;
    szamok=0;

    if(s>0 && s!=6)
    {
    printf("A kod nem 6 szambol all!\n");
    printf("Adj meg egy 6 szamjegyu kodot: ");
    continue;
    }

    if(s==6)
    {
    for(i=0; i<6; i++)
    if(tomb[i]>='0' && tomb[i]<='9')
    szamok++;
    }

    if(s==6 && szamok!=6)
    {
    printf("Nem jo a kod, csak szamokat tartalmazhat!\n");
    printf("Adj meg egy 6 szamjegyu kodot: ");
    continue;
    }

    if(szamok==6)
    {
    for(i=0; i<5; i++)
    osszeg+=tomb[i]-'0';
    }

    if((osszeg%6)==(tomb[5]-'0'))
    {
    printf("Jo a kod!\n");
    fflush(stdin);
    printf("Adj meg egy 6 szamjegyu kodot: ");
    }
    else
    {
    printf("Nem jo a kod!\n");
    fflush(stdin);
    printf("Adj meg egy 6 szamjegyu kodot: ");
    }
    }
    }

    Set The World On Fire!!!

Új hozzászólás Aktív témák