[ANSI C] Ustawianie n-tej wartości w tablicy


(cardioxide) #1

Witam,

jestem początkujący w C, także dla niektórych moje pytanie może wydawać się banalne. Mam następujący kod:

#include 

int main (void)

{

int tablica[5] = {0};

int i = 0;

tablica[2] = 3;

tablica[3] = 7;

for (i=0;i!=5;++i) {

printf ("tablica[%d]=%d\n", i, tablica[i]);

}

return 0;

}

Chciałbym zamiast na stałe przypisanych wartości 3 i 7 móc samemu wprowadzić wartości dla wybranych tablica[x]. Czy mógłby ktoś w prostu sposób podpowiedzieć jak przypisać jakąś wartość dla wybranych argumentów tablicy?


(Marcin 110) #2

Przez standardowe wejście do n-tej komórki:

scanf("%d", tablica + n);

lub

scanf("%d", &tablica[n]);

(Zulowski) #3
for (i=0;i!=5;++i) {

printf ("tablica[%d]=%d\n", i, tablica[i]);

Ten kawałek kodu powinien innaczej wyglądać (zamiast i != 5, daj i<5) bezpieczniej i lepiej, czasami można przeskoczyć o jedną wartość, i utkniesz w pętli nieskończonej, a dając warunek i<5 będzie poprawne dla 6,7,8,9...


(cardioxide) #4

Prosiłbym o jeszcze jedną wskazówkę. Zmodyfikowałem powyższy kod w którym gdzieś teraz tkwi błąd:

#include 

int main (void)

{

int tablica[5] = {0};

unsigned int n;


printf("podaj numer bitu:\n");

scanf("%d", &tablica[n]);


printf ("tablica[%d]=%d\n", n, tablica[n]);


return 0;

}

Chodzi mi o to bym mógł wybrać nr bitu tablicy i przypisać jej wartość lub wybrać nr tablicy i program przypisuje z góry określoną jej wartość. Proszę jedynie o wskazówki bo sam chciałbym dojść do rozwiązania. Dla kogoś moje pytania mogą być banalne, ale ja dopiero stawiam pierwsze kroki w C. Pomocna mi w tym jest Wikibook C ale nie rozwiewa moich wszystkich wątpliwości.


(Marcin 110) #5

Nie określiłeś zmiennej n, czyli indeksu komórki tablicy, którą chcesz zmienić. Powinieneś użyć dwóch scanfów. Jednego do wczytania n, drugiego do zmiany tablica[n].

BTW: Doczytaj, co to są bity i bajty.


([alex]) #6
unsigned tb[100]={0};unsigned numerbitutablicy=3412;unsigned element=numerbitutablicy  5; // jeżeli unsigned 32 bitowyunsigned bit=numerbitutablicy  0x1F; // jeżeli unsigned 32 bitowytb[element]|=(1bit); // ustaw bittb[element]=~(1bit); // resetuj bit [/code]

(cardioxide) #7

Zbyt pochopnie użyłem określenie 'bit'. Na myśli bardziej miałem 'element tablicy' lub coś w tym stylu :slight_smile:


(Zulowski) #8
scanf("%d", &tablica[n]);

tu też źle, wczytując do tablicy nie podaje się ampersanda (&)


([alex]) #9

Tu akurat się podaje.