Problém v C

Programovacie jazyky, rady, poradňa...
Jygsaw
Amateur
Amateur
Príspevky: 24
Registrovaný: 06 mar 2009, 14:40

Problém v C

Príspevok od používateľa Jygsaw »

Prajem pekný deň,
prednedávnom som sa začal učiť jazyk C a mám nasledujúci problém:

Kód: Vybrať všetko

#include <stdio.h>
int main() {
           int i,n,c[i],p=0,y[2];
           
           
           printf("Zadajte pocet cislic: ");
           scanf("%d", &n);
           
           
           for (i=1; i<(n+1); i++) {
                                   printf("Zadajte cislo %d: ", i);
                                   scanf("%d", &c[i]);
                                   }
                                   
           printf("\nZadajte dve cisla. Cisla budu predstavovat otvoreny interval.\nPrve cislo: ");
           scanf("%d", &y[1]);
           printf("Druhe cislo: ");
           scanf("%d", &y[2]);
           
           if (y[1]>y[2])
              printf("Prve cislo musi byt mensie ako druhe.");
              else {         
                   for (i=1; i<(n+1); i++) {
                                      if ((c[i]>=y[1]) && (c[i]<=y[2]))
                                      p++;
                                      }
                                   
                   printf("Pocet cisel v intervale <%d, %d> je %d", y[1], y[2], p);
                   }
           
           getchar();
           getchar();
           }
Keď si to spustíte a pri prvej možnosti zadáte počet číslic do 14 tak to funguje dobre, ale keď dáte 15 a viac, a potom tie čísla píšete tak pri 15. čísle to hodí chybu a program sa vypne. Viete niekto prečo je to tak?

PS: V C začínam, tak ak by to bola nejaka primitívna chyba tak sa mi pls nesmejte :)
picuge
Expert
Expert
Príspevky: 167
Registrovaný: 17 dec 2005, 20:38
Bydlisko: Bratislava/Martin

Príspevok od používateľa picuge »

Ked si vytvoris pole y[2], tak sa jednotlive prvky pola cisluju od 0, cize mozes pouzit iba y[0] a y[1], dalej mas pouzite c, kde i nemas dopredu definovane a kedze si ani nikde neurcil aku velkost ma i, tak ratalo s nejakou divnou hodnotou. V C sa toto riesi bud dynamickym polom alebo ak dynamicke pole este nevies pouzivat tak si zvolis taku velkost pola aka stacit bude musiet stacit(je to sice neprakticke riesenie, ale asi najednoduchsie). Cize v tomto pripade napriklad budes ratat s tym ,ze bude zadanych maximalne 10 cisel a teda definujes ako c[10].
Jygsaw
Amateur
Amateur
Príspevky: 24
Registrovaný: 06 mar 2009, 14:40

Príspevok od používateľa Jygsaw »

Dik, trocha som to poupravil a už všetko funguje ako má. Tá chyba bola v tom c tak ako si hovoril. Ešte raz dik za pomoc :wink:
Napísať odpoveď