matematykaszkolna.pl
język C gość: Czy ktoś zna się na języku C? Jak wczytać do n−elementowej tablicy za pomocą printf i scanf kolejne znaki, po czym wyświetlić całą tablicę? Metoda stosowana przy liczbach rzecz jasna nie działa.
16 paź 12:51
52: pokaż kod...
16 paź 12:55
gość: #include <stdio.h> #include <stdlib.h> #define n 5 int main() { int tab[n],i; for (i=0; i<n; i++) { printf("Podaj liczbe nr %d: ",i+1); scanf("%d",&tab[i]); } printf("\nElementy tablicy:\n"); for (i=0; i<n; i++) {printf("%d ",tab[i]);} printf("\n"); return 0; } chodzi mi o coś takiego, tylko żeby zamiast liter wpisywać znaki
16 paź 13:09
gość: Ktoś pomoże, proszę?
16 paź 13:30
Dziadek Mróz: #include <stdio.h> #define SIZE 10 int main(int argc, char **argv) { int *tab = (int *)malloc(SIZE * sizeof(int)); int i; for (i = 0; i < 10; i++) { printf("Podaj liczbe nr %d: ", i+1); scanf("%d", &tab[i]); } printf("Elementy tablicy:\n"); for (i = 0; i < SIZE; i++) { printf(" %d,", tab[i]); } free(tab); return 0; }
16 paź 14:37
gość: Dziękuję za odpowiedź, ale tu chodziło o tablicę wypełnioną znakami, a nie liczbami.
16 paź 14:50
Dziadek Mróz: Popraw z, na: 1. int *tab = (int *)malloc(SIZE * sizeof(int)); char *tab = (char *)malloc(SIZE * sizeof(char)); 2. printf("Podaj liczbe nr %d: ", i+1); scanf("%d", &tab[i]); printf("Podaj znak nr %d: ", i+1); scanf("%c", &tab[i]); 3. printf(" %d,", tab[i]); printf(" %c,", tab[i]);
16 paź 14:52
jc: zmień int tab[n]; → char tab[n]; scanf("%d", &tab[i] ); → scanf("%c", &tab[i] ); printf("%d ", tab[i] ); → printf("%c ", tab[i] );
16 paź 14:53
gość: @Dziadek Mróz Wyświetla: Podaj znak nr 1: *wpisuję* Wyświetla: Podaj znak nr 2 Podaj znak nr 3: Tak jakby pozwala wpisać tylko nieparzyste znaki.
16 paź 15:03
Dziadek Mróz: Chyba wiem o co chodzi. Musisz oczyścić bufor stdout: printf("Podaj znak nr %d: ", i+1); fflush(stdout); scanf("%c", &tab[i]);
16 paź 15:08
Dziadek Mróz: To zależy od kompilatora, systemu lub terminala. Na compileonline działa poprawnie u mnie. ale na Twojej maszynie może działać tak jak Tobie teraz
16 paź 15:09
gość: Dziękuję za wszystkie odpowiedzi, i tak mi to nie działa, ale trudno.
16 paź 15:31
Dziadek Mróz: W czym piszesz, jaki kompilator?
16 paź 15:33
jc: Spróbuj tak: #include <stdio.h> #define n 5 int main(){ char tab[n]; int i; for (i=0; i<n; i++) { printf("\nPodaj znak nr %d:",i+1); tab[i] = getchar(); getchar(); } printf("\nElementy tablicy:\n"); for (i=0; i<n; i++) printf("%c ",tab[i]); printf("\n"); return 0; }
16 paź 15:40
gość: @jc zadziałało! Dzięki przeogromne emotka
16 paź 15:42
Dziadek Mróz: Napisz jeszcze w czym piszesz te programy?
16 paź 15:43
jc: gość, to nie jest dobre rozwiązanie, choć jakoś działa (pod warunkiem, że nie wpiszesz od razu kilku znaków).
16 paź 15:47
gość: Code Blocks I jeszcze do tego programu Ma on też zliczać ile razy w tablicy pojawiła się litera "a".
16 paź 16:44
karolek7777: To nie jest trudne. Strina na chary, i sprawdzasz znak. W międzyczasie jęsli wystąpi a, to dodajesz do jakiejś zmiennej globalnej jeden, która na początku ma wartość równą
16 paź 16:45
karolek7777: Stringa na tablice charów
16 paź 16:46
karolek7777: równą zero* na początku ofc
16 paź 16:46
gość: A mógłbyś mi to napisać, bo nie ogarniam?
16 paź 16:48
gość: zrobiłem, ale tylko z polskimi literami z ascii
16 paź 16:54
karolek7777: @gość No to napisz kod , który pobiera napis do tablicy charów. I następnie dodaj instrukcję warunkową w pętli , która sprawdza czy znak to A? W CZYM TY PROBLEM WIDZISZ?!?!?!?! Jak ty egzamin zaliczysz
16 paź 16:55
karolek7777: Możesz i używać kodu ascii...
16 paź 16:55
karolek7777: Nie rozumiem co masz na mysli "tylko z polskimi literami z ascii".
16 paź 16:56
Dziadek Mróz: char *napis = (char *)malloc(64 * sizeof(char)); scanf("%s", napis); size_t ile_a = 0; size_t i; for (i = 0; i < 64; i++) { if (napis[i] == 'a') { ile_a++; } /* lub: napis[i] == 'a' ? ile_a++ : NULL; */ } free(napis);
16 paź 17:03