Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: ukol ve skole

Aktivity
Avatar
j.zejdl
Člen
Avatar
j.zejdl:10.1.2014 9:30

čau, máme udělat
Použijte alokovanou paměť pro datový typ pole pěti racionálních čísel, pole pomocí cyklu naplňte čísly od 3 do 7 a POTOM sečtěte čísla na lichých pozicích.
Výsledek vypište. Ve všech operacích nepoužívejte indexy, ale ukazatele. Získanou paměť zase uvolněte.
Moc tomu nerozumím, mám dát float? nechápu to..

 
Odpovědět
10.1.2014 9:30
Avatar
j.zejdl
Člen
Avatar
j.zejdl:10.1.2014 10:02
#include<stdlib.h>
int main(void)
{
        int x;
        float vysl = 0, iden = 0;
        float *pole_p;

        pole_p = (float*)malloc(sizeof(float) *5);
        if(pole_p == NULL)
        {
                exit(1);
                printf("Nedostatek pameti!");
        }

        for(x = 3; x < 7; x++)
        {
        *(pole_p + x) = x + 1;
        }

        for(x = 3; x < 7; x = x + 2)
        {
        iden = *(pole_p + x);
        vysl = vysl + iden;
        }

        printf("vypocetedek je: %f", vysl);
        free(pole_p);

        return 0;
}
 
Nahoru Odpovědět
10.1.2014 10:02
Avatar
Odpovídá na j.zejdl
Libor Šimo (libcosenior):10.1.2014 10:17

Float je zbytočný, veď to máš naplniť celými číslami.

Nahoru Odpovědět
10.1.2014 10:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
coells
Tvůrce
Avatar
Odpovídá na j.zejdl
coells:10.1.2014 10:45
int main()
{
    int i;
    float soucet;
    float *pole;

    pole = (float *)malloc(sizeof(float) * 5);

    for (i = 0; i < 5; i++)
        *(pole + i) = i + 3.0;

    soucet = 0.0;
    for (i = 1; i < 5; i += 2)
        soucet += *(pole + i);

    printf("soucet je: %f", soucet);
    free(pole);

    return 0;
}
 
Nahoru Odpovědět
10.1.2014 10:45
Avatar
Michal Říčan (fussak):10.1.2014 10:50

Ahoj, snad jsem to pochopil správně a povede se mi ti to troche osvětlit :)

Racionální číslo je číslo které lze zapsat ve tvaru a/b, ty máš čísla dána od 3 do 7 ( celá čísla -> použij int )

V cyklech máš blbě meze, paměť si alokouješ pro pět prvku a to teda pole[0] až pole[4]. Pak tam plníš pole[3] až pole[6].

Následně máš sečíst hodnoty na lichých pozicích což je dle mého pole[1] a pole[3].

Jelikož nemůžeš používat indexaci stačí si uvědomit, že pole[1] = *(pole_p + 1).

Když si rozepíšeš řešení tak máš hodnoty 3,4,5,6,7 a máš sečíst 4 a 6. Výsledkem by teda mělo být číslo 10.

Snad teď budeš chytřejší, pokud ani tak ne.

Editováno 10.1.2014 10:51
 
Nahoru Odpovědět
10.1.2014 10:50
Avatar
Odpovídá na j.zejdl
Libor Šimo (libcosenior):10.1.2014 11:21

Ospravedlňujem sa. Neuvedomil som si čo sú racionálne čísla. Má tam byť pole desatinných čísiel.

Nahoru Odpovědět
10.1.2014 11:21
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.