matematykaszkolna.pl
programowanie anonim123: Za tydzień mam kolokwium z programowania i nie wiem co to jest wyzerowana tablica 51 zmiennych typu char?
13 lis 13:22
znak: Chyba po prostu przypisujesz char tab[51] = 0. I powinno zrzutować na NULL.
13 lis 13:43
znak: Oczywiście inicjalizacja zależy od języka, a przynajmniej tak myślę, więc miej to na uwadze.
13 lis 13:48
Minato: To co zrobiłeś to przypisanie wartości 0 do tablicy w miejsce nr 51.
13 lis 13:56
znak: To tylko idea. W C++ poprawnym będzie char tab[51] = {0} lub też prościej char tab[51] {0}. W dodatku to nie jest przypisanie 0 jako liczby, a rzutowanie int'a na char (niejawnie). Jest to mała różnica, bo po wyświetleniu zawartości nie dostaniemy stricte 0.
13 lis 14:07
znak: I jeszcze, żeby nie było niedomówień − samo char tab[51] = 0 jest niepoprawne samo w sobie.
13 lis 14:21
anonim123: A ktoś może po kolei opisać działanie programu #include<stdio.h> int main() {int liczba,l,t; char Tekst[51]={0}; l=sizeof(liczba); t=sizeof(Tekst); puts("wielkosc tablicy"); printf("zmienna Tekst zajmuje %d B",t); printf("\nZmienna liczba zajmuje %d B\n",l); return 0;
13 lis 15:50
znak: Przecież to są podstawy. Skoro masz kolokwium z programowania, to znaczy, że studiujesz. Najprawdopodobniej też jest to jakiś kierunek związany z informatyką lub z wykorzystaniem jej. Dlaczego nie otworzysz książki i się nie przygotujesz do kolokwium? Jest masa dobrych książek z programowania, które to zapewne będzie Ci potrzebne.
13 lis 16:00
anonim123: A pod jakim tematem mam tego szukać w książce?
13 lis 16:11
znak: Ogółem na początku zorientuj się co robią funkcje sizeof(), puts() oraz printf(). Nawet na internecie możesz to szybko znaleźć, będzie nawet lepiej niż w książce, bo każda książka innym rytmem idzie.
13 lis 16:13
znak: W dodatku podpowiem, że dobrze by było, gdybyś sobie zobaczył również ile pamięci zajmują poszczególne zmienne. Na przyklad na ilu bitach (lub bajtach, wszystko jedno) zapisany jest pojedynczy znak (zmienna typu char), a na ile zmienna liczbowa typu int.
13 lis 16:16
anonim123: To mniej więcej wiem sizeof() zwraca rozmiar obiektu puts () wyświetla tekst a printf() wyświetla tekst ale też może wyświetlić np.cyfry
13 lis 16:17
znak: O, no to widzisz, już prawie wiesz wszystko, co potrzebne do zrozumienia działania tego programu. To teraz jak myślisz, co Ci wyskoczy na ekran po wywołaniu funkcji?
13 lis 16:20
anonim123: wielkosc tablicy zmienna Tekst zajmuje ilość B Zmienna liczba zajmuje ilość B
13 lis 16:22
znak: Oj zastanów się. Co oznacza '%d'?
13 lis 16:26
anonim123: liczba dziesiętna
13 lis 16:29
znak: Zgadza się. A gdzie u Ciebie powyżej jest ta liczba dziesiętna?
13 lis 16:31
anonim123: pod ilością
13 lis 16:32
znak: Okej, ale w programie masz konkretne zmienne i konkretne wartości. I to Ci też wyskoczy na ekranie. To w zasadzie ostatnie pytanie: ile wyniesie wartość zmiennych l oraz t?
13 lis 16:37
anonim123: To wiem, ale nie rozumiem jak działa tabliczka
13 lis 16:40
znak: Ogółem deklarując tablicę deklarujesz ciąg zmiennych tego samego typu tuż obok siebie. Więc deklaracja char tab[10] zajmie tyle pamięci ile dziesięć zmiennych typu char.
13 lis 16:44
anonim123: A jak się równa zeru to jaką pełni funkcję w tym programie?
13 lis 16:55
anonim123: Programie którego kod podałam
13 lis 16:59
anonim123: Nie mogę tego znaleźć w książceemotka
13 lis 17:04
anonim123: Ktoś może to prosto wyjaśnić?
13 lis 17:21
znak: Drogi anonimie. Wartość zmiennej nie ma wpływu na to, ile ta zmienna zajmuje bajtów. int a = 100 będzie zajmował tyle samo miejsca, co int b = 40000. Analogicznie char t = 'a' zajmuje tyle samo, co char r = 0.
13 lis 17:37
znak: Poczytaj sobie o tym, ile zajmują pamięci poszczególne typy podstawowe (taka ich nazwa).
13 lis 17:38
anonim123: Ale co daje tabliczka w tym programie?
13 lis 17:38
anonim123: Kiedy uruchamiam ten program to przy podawaniu litery wyskakuje okno program zadanie 2.exe przestał działać.Co jest źle? #include <stdio.h> main() { float liczba; char litera; printf("Ekran:\n podaj liczbe:"); scanf("%f",&liczba); printf("\n wpisales liczbe: %.2f ", liczba); printf("podaj litere:"); scanf("%s",&litera); printf("\n napisales litere: %s",litera); }
13 lis 17:46
znak: Jaka tabliczka? Tablica typu char? Jest to po prostu tablica, którą zerujesz, jest o tyle potrzebna, że potem sprawdzasz jej rozmiar, nic więcej. Na C się nie znam, ale z tego co czytam, to najprawdopodobniej spaprałeś dwie ostatnie linie. %s oznacza łańcuch znaków, a nie pojedynczy znak. Ja bym zamienił na %c i zobaczył, czy będzie dobrze.
13 lis 17:56
anonim123: Jak zrobię tak to nie mogę wpisać w ogóle litery #include <stdio.h> main() { float liczba; char litera; printf("Ekran:\n podaj liczbe:"); scanf("%f",&liczba); printf("\n wpisales liczbe: %.2f ", liczba); printf("podaj litere:"); scanf("%c",&litera); printf("\n napisales litere: %c",litera); }
13 lis 17:59
znak: Mhm, możliwe, że on automatycznie wczytuje znak końca linii. Spróbuj dwa razy pod rząd dać ten scanf("%c"...)
13 lis 18:07
anonim123: Jak dałam podwójnie to działa, ale chyba za każdym razem w programach nie mam pisać podwójnie?
13 lis 18:15
znak: Oj trochę by tłumaczyć, dlaczego działa, a czemu nie. Ogółem chodzi o to, że po kliknięciu entera po wpisaniu liczby przekazujesz tak naprawdę na strumieni wyjścia dwie rzeczy: wartość liczbową oraz znak końca linii (enter). Dlatego jeśli masz jedno scanf(%c), to do zmiennej litera zostanie wczytane '\n'. Polecam się wziąć do nauki z notatek/książki, bo łatwiej nie będzie emotka
13 lis 18:29
anonim123: Dziękuję emotka
13 lis 18:44
jc: Zamień %c na %s (tylko przy scanf) i będzie lepiej.
13 lis 18:51
znak: Tak, to dobre rozwiązanie, wczytujesz łańcuch, a wyświetlasz znak, więc przy pobieraniu łańcucha zostanie zignorowany znak nowej linii.
13 lis 19:27
anonim123: Nie rozumiem dlaczego w tym kodzie jest akurat taka tablica? #include <stdio.h> main() { int liczba; char tekst[50]={0}; puts("wpisz ciag znakow:"); gets(tekst); puts(tekst); printf("podaj jakas liczbe:"); scanf("%d",&liczba); printf("wpisales liczbe: %d",liczba); fflush(stdin); return 0; }
14 lis 14:31
anonim123: Dlaczego nie ma np.char tekst[51]={0};
14 lis 14:51
anonim123: Już rozumiem emotka
14 lis 16:24
anonim123: Może ktoś pomóc skąd jest l=sizeof(liczba); t=sizeof(Tekst); dlaczego występuje tu l i t
16 lis 14:38
znak: Dbaj o formatowanie kodu, a nic Ci nie umknie. Na samym początku masz int l, t; <− jest to zainicjalizowanie dwóch zmiennych typu int, bez przypisania. Dlaczego tak to występuje? Bo tak chciał autor programu, nic więcej.
16 lis 15:48