Python týden Geek tričko zdarma
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python

Diskuze: Zobrazeni vektoru

Aktivity (2)
Avatar
Marek Novák
Člen
Avatar
Marek Novák:26.12.2018 10:53

#include <stdio.h>
int main(){
int RP, i,kladne,zaporne,n;
float INTERVAL[RP];
printf("Zadejte pocet slozek RP:");
scanf("%d",&RP);
printf("Delka INTERVALU je:%d",RP);
for(i=0;i<RP;i++){
printf("Zadejte slozku INTERVALU %d.\n",i);
scanf("%d",&IN­TERVAL[i]);
}
for (i = 0; i < RP; i++)
{
printf("%d ", INTERVAL[i]);
}
return 0;
}

Zkusil jsem: Dohledal jsem obdobné programy a nevím v čem je chyba. Zkoušel jsem zadávat do intervalu jiné proměnné než i a pak je zobrazovat. Např n:

printf("Zadejte slozku INTERVALU %d.\n",i);
scanf("%d",&IN­TERVAL[i]);
}
nebo RP

Chci docílit: Zdravím, z klávesnice načtu délku INTERVALU, poté pomocí for zadám jednotlivé složky. Problém nastává v okamžiku, když chci zobrazit INTERVAL na terminálu.

 
Odpovědět 26.12.2018 10:53
Avatar
Odpovídá na Marek Novák
Matúš Olejník:26.12.2018 12:03

Keď načítavaš a vypisuješ float hodnoty používaj špecifikátor (neviem či sa to takto prekladá :D ) %f namiesto %d a malo bude ti hodnoty vypisovať správne.
Iná vec čo som si všimol je ako sa snažíš pracovať s dynamickým poľom. Niektoré kompilátory ti dovolia spraviť toto čo máš ty

float INTERVAL[RP];

teda deklarovať pole o nejakej, dopredu neznámej, veľkosti. Správne by si to mal zmeniť na

float* INTERVAL;
//kód pre zadanie veľkosti
INTERVAL = (float*) malloc(RP * sizeof(float));
//ostatný kód
//a pred koncom uvoľniť alokovanú pamať
free(INTERVAL);

viacej info -> Dynamická práce s pamětí v jazyce C
No a posledná vec nepíš názvy premenných veľkými písmenami, je taká konvencia, že takto sa označujú napr. konštanty

#define KONSTANTA_PI 3.14

Celý program by teda mohol vyzerať takto :)

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

int main() {

    int intervalSize, i, kladne, zaporne, n;
    float* interval;

    printf ("Zadejte pocet slozek RP: ");
    scanf ("%d", &intervalSize);

    printf ("Delka INTERVALU je: %d\n", intervalSize);

    interval = (float*) malloc(intervalSize * sizeof(float));

    for (i = 0; i < intervalSize; i++) {
        printf ("Zadejte %d. slozku INTERVALU \n", (i + 1));
        scanf ("%f", &interval[i]);
    }

    for (i = 0; i < intervalSize; i++) {
        printf("%f ", interval[i]);
    }

    free(interval);

    return 0;
}
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +2 26.12.2018 12:03
/* I am not sure why this works but it fixes the problem */
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 2 zpráv z 2.