Hirdetés

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

  • Sk8erPeter
    nagyúr

    Helló!

    Szeretném, ha valaki megírna a következő feladatra egy programot. Jövő héten prog alapból CV vizsgám lesz, addig próbálom megérteni a feladatokat.

    Paraméterei két karakter tömb. A függvény másolja át a második tömb karaktereit a helyköz és tabulátor karakterek kivételével az elsőbe. Visszatérési értéke az átmásolt karakterek száma.

    Amit én csináltam:

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

    main ()
    {
    int i;
    char tomb1[i];
    char tomb2[i];
    printf ("\n\nKérek egy szót: ");
    scanf ("%c",tomb1);
    printf ("\n");
    printf ("\n\nKérek egy szót: ");
    scanf ("%c",tomb2);
    printf ("\n");
    for (i=0; i<strlen(tomb1); i++) {

    printf("%c",tomb1[i]);
    }
    system ("PAUSE");
    }

    Nah ez így nem jó, mert lefagy a program. Igaz a feladat nem írja, hogy töltsem fel a karakter tömböt, de gondoltam kipróbálom aztán kiíratom. Majd jöhetne a másolgatás és a kiíratás után megbizonyosodok, hogy tényleg mit hova másoltam. Ha kérhetem magyarázza el valaki ez hogy nézne ki.

    Köszönöm!

    Olvasgatom közben itt a hsz-eket. Igen elég siralmas. Sajnos nem volt túl sok programozói tudásom ennek ellenére prog infóra mentem végül mérnök infó helyett. Remélem sikerül ráéreznem és beletanulnom. Nálunk prog alapból a gyak órák semmit nem értek. Vannak, akik nem tanárnak születtek. Tanár elmondta a feladatot, gyerek elkezdte megoldani ha tudta. Majd végül leírta a megoldást a táblára aztán ment is tovább. Aki lemaradt az így járt. Előadások megértéséhez kellett volna egy alapos tudás. Nyáron foglalkozni akarok php-vel és weboldal készítéssel. Már vettem 2 könyvet Webszerkesztés stílusosan: HTMl és CSS , Bevezetés a php5 programozásba 1030 oldal asszem! :D legalább alapos :D Igyekszem behozni a lemaradásom.

    Érdekes ez a feladat-meghatározás, ha így kezdődik: "Paraméterei két karakter tömb." - minek a paraméterei...? Ki lehet találni, hogy egy függvénynek, de az egész specifikáció elég gyengusz.

    Akkor menjünk sorba a programodon:
    main ()
    ne szokj rá, hogy ezt használod, írd ki explicite a visszatérési értéket:
    int main(){
    /*...*/
    return 0; /* ha nincs hiba*/
    }

    int i;
    char tomb1[i];
    char tomb2[i];

    Ez meg micsoda? :F Eleve i-nek nincs semmi kezdőértéke, hogy akarod így létrehozni i-vel a tömböt? Mekkora méretű lesz a tömb?

    scanf ("%c",tomb1);
    Egyetlen karaktert olvasol tomb1 0. indexe helyére...
    Használhatnád pl. a getchar() függvényt EOF-ig, vagy ameddig meghatározod, hogy beolvassson (mit adjon meg a felhasználó, amivel jelzi, hogy vége a beadott karaktersorozatnak).

    Ezután van egy for ciklusod, amivel ki szeretnéd íratni tomb1-et, de a másolás nincs meg.
    Valami ilyesminek kellene szerepelnie a for cikluson belül, persze ha már a többi része jó:
    for(i=0;i<strlen(tomb1) && i<strlen(tomb2); i++) /* csak hogy ne indexeljen túl, ha esetleg a tomb1 kisebb méretű tomb2-nél, persze ennek ellenőrzésére más megoldás is van */
    {
    if(tomb2[i] != '\t' || tomb2[i] != ' ') /* ha nem tabulátor és nem szóköz */
    tomb1[i]=tomb2[i];
    }

    A ciklus végén zárd le lezáró 0-val a tomb1-et.

    Ezenkívül ennek az egésznek szerintem külön függvényben kellene lennie, ami két karaktertömböt kap paraméterként, visszatérési értéke pedig az átmásolt karakterek száma. A feladat legalábbis ezt mondja...

    "Igaz a feladat nem írja, hogy töltsem fel a karakter tömböt"
    És akkor mégis mit akarnál átmásolni, ha nincs feltöltve?

    system ("PAUSE");
    Ezt felejtsd el! Nem platformfüggetlen, felesleges rendszerhívás.
    Használd helyette pl. a getchar()-t...

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