Avatar
j.zejdl
Člen
Avatar
j.zejdl:

č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:
#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):

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
Redaktor
Avatar
Odpovídá na j.zejdl
coells:
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):

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  +1 10.1.2014 10:50
Avatar
Odpovídá na j.zejdl
Libor Šimo (libcosenior):

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.