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ążce
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
13 lis 18:29
anonim123: Dziękuję
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
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