Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 18.11.2020, 23:22   #1
senje
Član
 
Član od: 1.8.2016.
Poruke: 76
Zahvalnice: 47
Zahvaljeno jedanput na jednoj poruci
Određen forumom 0.0000 као резултат аутпута формата double [програмс

Здраво људи, здраво форумаши.

Почетник сам у програмирању.
Радим са програмским језиком Це.

Не могу на енглеском да пронађем решење, па сам решио да вас питам овде око тога.

Не знам како да изменим код па да као аутпут у случају формата дабл добијем одговарајућу вредност, а не 0.000. Молим свакога ко зна око тога или има неку идеју да ми одговори. Хвала!

Изволите принтскрин самог кода и са десне стране аутпут у конзоли.

https://ibb.co/wRHYRpf
senje je offline   Odgovor sa citatom ove poruke
Stara 19.11.2020, 0:34   #2
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 6.959
Zahvalnice: 92
Zahvaljeno 3.098 puta na 1.876 poruka
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Veoma jednostavno, tvoja printf() funkcija štampa vrednost &b, koja ne predstavlja vrednost b već memorijsku lokaciju gde je podatak smešten.

Da konfuzija bude veća, prilikom štampe naterao si printf() da eksplicitno kastuje izlaz od &b u float čime bi trebalo da kao rezultat dobiješ veoma čudne brojeve ili ako je kompajler tako podešen, nule.

Ispravan kod bi izgledao ovako.

Kod:
#include <stdio.h>

int main() {
    double b = 3.45667;
    // Stampa vrednost b.
    printf("Vrednost b: %f\n", b);

    // Stampa lokaciju u memoriji (pokazivac) gde se b nalazi.
    printf("Adresa za b: %p\n", &b);
    return 0;
}
Dakle, zapamti, kada štampaš proste podatke ne želiš da koristiš operator & već direktno njihove nazive.
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 19.11.2020, 0:38   #3
Luka Filipovic
Starosedelac
 
Član od: 9.7.2010.
Lokacija: N/A
Poruke: 1.786
Zahvalnice: 746
Zahvaljeno 534 puta na 367 poruka
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Ampersand operator ispred promenljive sluzi da dohvatis njenu memorijsku adresu, sto ti u slucaju printf nije potrebno.

Kod:
printf("b iznosi %f", b);
EDIT:
sad videh da me je Neutrino preduhitrio
Luka Filipovic je offline   Odgovor sa citatom ove poruke
Stara 20.11.2020, 22:54   #4
senje
Član
 
Član od: 1.8.2016.
Poruke: 76
Zahvalnice: 47
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Хвала вам стварно обојици на помоћи. Радим у компајлеру Коуд Блокс, који такве грешке не пријављује. Просто да је навео то као ерор, ја се не бих ни јавио. Друг ми је рекао да кренем у Линуксу да радим, јер су тамо ваљда компајлери бољи што се тиче пријављивања грешака.

Ако може још једна помоћ: није ми јасно зашто инам не избацује као аутпут вредности које задам као вредности тог датог инама.

Дакле, инам је тип променљивих које сам програмер дефинише. Програмер даје назив типу, одређује скуп вредности које дата променљива може да има.

Ако имамо унапред дефинисан тип променљиве, int, па вредности променљиве овог типа могу да се крећу од 0 до не знам ни ја шта, па задамо изношење вредности дате променљиве - ми добијамо нпр. број 5.

Зато ме чуди ово са инамом. Зар не би требало да буде исто као са интом? Ако сам направио инам "компанија", дефинисао рецимо три вредности тог типа променљиве (Соко Штарк, Пекабета, Делта) и онда једној променљивој (нпр. а) придао вредност Пекабета рецимо, зашто ми онда не изнесе као аутпут "Пекабета" ако ја то тражим?

Видим да ради она могућност да ми се изнесе као аутпут редни број вредности која је задата тој променљивој. Дакле, ако тражима аутпут помоћу формат-спесифајера %d, добијам редни број дате вредности. Буквално, ако сам лупио Соко Штарк као прву вредност, изаћиће ми "1".
Чуди ме зашто ми излази "[null]" када тражим вредности које сам самостално дефинисао као вредности тог типа променљиве. То ми излази кад у принтефу користим s као формат-спесифајер.

Прослеђујем принтскринове:

1) аутпут инама са %d
https://ibb.co/HVYGTns

2) аутпут инама са %s - без икаквог аутпута
https://ibb.co/N2jmLFR

3) аутпут инама са %s - са аутпутом "null"
https://ibb.co/FVp1tb8

Хвала још једном!
Надам се да ћу ускоро користити компајлер у Линуксу који ће убојитије показивати на грешке у коду, тако да ћу вам мање досађивати.
Не замерите.
senje je offline   Odgovor sa citatom ove poruke
Stara 21.11.2020, 0:12   #5
Andross
Kekule Mekule
 
Avatar korisnika Andross
 
Član od: 8.12.2005.
Lokacija: Beograd
Poruke: 3.834
Zahvalnice: 594
Zahvaljeno 1.153 puta na 597 poruka
Slanje poruke preko Skypea korisniku Andross
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Citat:
senje kaže: Pregled poruke
Хвала вам стварно обојици на помоћи. Радим у компајлеру Коуд Блокс, који такве грешке не пријављује. Просто да је навео то као ерор, ја се не бих ни јавио. Друг ми је рекао да кренем у Линуксу да радим, јер су тамо ваљда компајлери бољи што се тиче пријављивања грешака.
SumLjam da linux kompajleri citaju misli i znaju kada zelis da printas vrednost a kada memorijsku adresu
Andross je offline   Odgovor sa citatom ove poruke
Stara 21.11.2020, 0:22   #6
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 6.959
Zahvalnice: 92
Zahvaljeno 3.098 puta na 1.876 poruka
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Plus, ako me pamćenje dobro služi, Code Blocks dolazi sa MinGW-om (GCC) "po difoltu" iliti u prevodu sa "Linux kompajlerom"
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 21.11.2020, 21:56   #7
senje
Član
 
Član od: 1.8.2016.
Poruke: 76
Zahvalnice: 47
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Citat:
andross kaže: Pregled poruke
sumljam da linux kompajleri citaju misli i znaju kada zelis da printas vrednost a kada memorijsku adresu
Капирам, али мени као почетнику сви предлози значе, па и тај да пређем на Линукс. Не би ми ништа фалило да пробам више различитих компајлера. Као кад човек ради у некој фирми и буквално да никад не оде из те фирме не би било помака у његовом животу. Промени фирму, провали да за барем пет, шест ствари постоји паметнији начин за рад.

П. С. Јел прочитао неко ово око инама?
senje je offline   Odgovor sa citatom ove poruke
Stara 21.11.2020, 22:00   #8
senje
Član
 
Član od: 1.8.2016.
Poruke: 76
Zahvalnice: 47
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Иначе, не очекујем заиста око овога да ми неко помаже редовно, него сам се просто доста тражио око тога и нисам успео да пронађем. Но, нема везе. Можда се неко сети да ми препоручи неку књигу за Ц програмирање или тако нешто. Уделите неки линк, пољубите оног што лута.
senje je offline   Odgovor sa citatom ove poruke
Stara 21.11.2020, 22:07   #9
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 6.959
Zahvalnice: 92
Zahvaljeno 3.098 puta na 1.876 poruka
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Citat:
senje kaže: Pregled poruke
Уделите неки линк, пољубите оног што лута.
Knjigu možeš da dobiješ ali od ljubljenja nema ništa.

Programski jezik C sa rešenim zadacima, Laslo Kraus

Ako baš hoćeš Bibliju C jezika Programski jezik C, Kernigan i Riči

I nemoj svega ti da mešaš ćirilicu i Vukovu "piši kao što govoriš" kod IT termina. Meni, koji znam C, trebalo je previše vremena da shvatim šta si prekrstio u "инам".
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 22.11.2020, 13:08   #10
senje
Član
 
Član od: 1.8.2016.
Poruke: 76
Zahvalnice: 47
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Citat:
Neutrino kaže: Pregled poruke
Knjigu možeš da dobiješ ali od ljubljenja nema ništa.

Programski jezik C sa rešenim zadacima, Laslo Kraus

Ako baš hoćeš Bibliju C jezika Programski jezik C, Kernigan i Riči

I nemoj svega ti da mešaš ćirilicu i Vukovu "piši kao što govoriš" kod IT termina. Meni, koji znam C, trebalo je previše vremena da shvatim šta si prekrstio u "инам".

То је она Синанова песма "изађи на пет минута и пољуби оног што лута", спрдње ради сам то рекао. У праву си за ћирилицу, мада сам у праву и ја што чувам своје писмо, тако да је решење вероватно у оном најтежем: да пишем све време ћирилицом, али да у загради чувам енглеске називе. Мислим да је то најпоштеније према матерњем језику и према стручности, да се тако изразим, тј. према стручним терминима, теми о којој реч.

Хвала за препоруке.

Преслушавам курс "Ц за почетнике" на Јудемију (енг. "Udemy") што му дође као неко предјело.

Хвала заиста и не замерите на хумору, почетничким питањима, ћирилици која све прождире.
senje je offline   Odgovor sa citatom ove poruke
Stara 15.1.2021, 1:22   #11
senje
Član
 
Član od: 1.8.2016.
Poruke: 76
Zahvalnice: 47
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

https://ibb.co/5LWTd4r

Здраво, људи, опет ја.
Ставио сам линк за принтскрин тога што ме тренутно мучи.
Фора је што кад ставим printf за променљиву r, онда добијам сасвим нормално избачену вредност тог r-а. Небитно, ако је неко унео 10, избаци ми 10. Међутим, кад хоћу да ми избаци вредност истог тог r помноженог са 12, тј. вредност променљиве коју сам ја назвао b, добијам нешто доста чудно.

Има ли неко идеју због чега је то тако?

Хвала!
senje je offline   Odgovor sa citatom ove poruke
Stara 15.1.2021, 2:02   #12
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 6.959
Zahvalnice: 92
Zahvaljeno 3.098 puta na 1.876 poruka
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Kada napišeš samo

Kod:
int r;
vršiš tzv. deklaraciju kojom kompajleru stavljaš do znanja da želiš da rezervišeš promenjljivu tipa celog broja pod nazivom r. Kompajler evidentira tu promenjljivu u nečemu što se interno zove tabela simbola i odvoji za nju onoliko bajtova koliko je potrebno da se smesti taj ceo broj u memoriji (obično dva bajta).

Međutim, ime i tip nisu dovoljni da promenjljiva može odmah da se koristi jer kompajler zna gde je i šta je tvoja promenjljiva ali ne i koja je njena upotrebljiva vrednost pa kad očita šta se nalazi na lokaciji koja je rezervisana za nju nailazi na đubre koje je ostalo od prethodne manipulacije memorijom.

Zato za svaku deklarisanu promenjljivu kojoj ne dodeljuješ odmah vrednost moraš pre upotrebe da dodeliš neku početnu vrednost (da je "inicijalizuješ").

Kod:
#include <stdio.h>

int main() {
    int r = 1;
    int b = 12 * r;
    printf("%d, %d", r, b);
    return 0;
}

// Rezultat: 1, 12
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 20.1.2021, 0:00   #13
senje
Član
 
Član od: 1.8.2016.
Poruke: 76
Zahvalnice: 47
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: 0.0000 као резултат аутпута формата double [програм

Citat:
neutrino kaže: Pregled poruke
kada napišeš samo

Kod:
int r;
vršiš tzv. Deklaraciju kojom kompajleru stavljaš do znanja da želiš da rezervišeš promenjljivu tipa celog broja pod nazivom r. Kompajler evidentira tu promenjljivu u nečemu što se interno zove tabela simbola i odvoji za nju onoliko bajtova koliko je potrebno da se smesti taj ceo broj u memoriji (obično dva bajta).

Međutim, ime i tip nisu dovoljni da promenjljiva može odmah da se koristi jer kompajler zna gde je i šta je tvoja promenjljiva ali ne i koja je njena upotrebljiva vrednost pa kad očita šta se nalazi na lokaciji koja je rezervisana za nju nailazi na đubre koje je ostalo od prethodne manipulacije memorijom.

Zato za svaku deklarisanu promenjljivu kojoj ne dodeljuješ odmah vrednost moraš pre upotrebe da dodeliš neku početnu vrednost (da je "inicijalizuješ").

Kod:
#include <stdio.h>

int main() {
    int r = 1;
    int b = 12 * r;
    printf("%d, %d", r, b);
    return 0;
}

// rezultat: 1, 12
Неутрино, стварно хвала ти пуно на помоћи. Нисам стигао да одговорим јер и не стижем толико да учим програмирање. Дођем с посла, бацим поглед на ову лекцију, настављам где сам стао, наилазим на исти проблем као прошли пут, мозгам нешто по глави и применим ово што си ми рекао, па се тек онда сетим: "Хеј, па ово ми је заправо неко рекао на ск.рс!" Тако да сам ја ово све прочитао, усвојио и применио, а заборавио да се захвалим истог тренутка вероватно јер сам био уморан. Хвала још једном!
senje je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
How to... Java ivan90BG Programiranje 324 25.7.2020 21:56
Даљински од ТВ карте као даљински за рачуl njupadzija Video/TV softver 0 10.6.2013 8:43
Šta bi sa Blood Omen serijalom? Nash Knight O igrama uopšte 45 24.9.2011 14:00
Adam: Double Factor - hint needed nets Avanturističke igre 1 6.12.2007 22:14


Sva vremena su po Griniču +2 h. Sada je 14:10.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2021, vBulletin Solutions, Inc.
Hosted by Beograd.com