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
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