<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=10896&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-03-03T15:06:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=10896&amp;mode</id>
<entry>
<author><name><![CDATA[leech10]]></name></author>
<updated>2015-03-03T15:06:16+01:00</updated>
<published>2015-03-03T15:06:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121745#p121745</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121745#p121745"/>
<title type="html"><![CDATA[Re: Pomoc w zrozumieniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121745#p121745"><![CDATA[
Hej<br /><br />Dzięki już jasne.<br /><br />Dobra ja źle to okresliłem, trudno mi było wytłumaczyć.<br /><br />Na forum jestem długo ale w sumie z pewnych powodów nic nie robiłem. teraz do tego wracam więc tak jakby mnie nie było. <br /><br />Przepraszam za zamieszanie i dzięki za pomoc<br /><br />Pozdrawiam<br />Piotrek<br /><br />P.S.<br /><br />W sumie błąd wyniknął ze złego zrozumienia działania pętli while i instrukcji if w niej zawartych. Prawda, mój błąd rozumowania był można powiedzieć podstawowy. Wrócę do nauki od początku książki, inaczej to niema sensu, zbyt długa była moja przerwa. Dzięki raz jeszcze i przepraszam za głupotę, jeśli tak można <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=935">leech10</a> — 3 mar 2015, o 15:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2015-03-03T14:27:58+01:00</updated>
<published>2015-03-03T14:27:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121738#p121738</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121738#p121738"/>
<title type="html"><![CDATA[Re: Pomoc w zrozumieniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121738#p121738"><![CDATA[
Sprawa jest bardzo prosta. Przedstawiając to w bardzo uproszczony sposób, po użyciu &quot;return&quot; nie wyświetli się już absolutnie nic, bo program zakończył właśnie już swoje działanie (można powiedzieć bezpowrotnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />). Używając &quot;break&quot; opuszczasz zewnętrzną pętlę &quot;while ((ch = getchar()) !='\n')&quot;, a więc sterowanie programu przechodzi do kolejnych linii za tą pętlą tj. &quot; getchar(); return 0;&quot;.<br /><br />Jeżeli nie przerwiesz działania zewnętrznej pętli wtedy warunek &quot;(ch == 'n' || ch == 'N')&quot; nie zostanie spełniony i wyświetli się komunikat &quot;Podaj T lub N.&quot;, jednocześnie oczekując na znak końca linii (Enter). Po czym w kolejnej iteracji oczekiwany jest znak różny od '\n' i cały cykl się powtarza.<br /><br />Jeszcze jedna kwestia. &quot;while (getchar() != '\n') continue;&quot; można uprościc do postaci &quot;while (getchar() != '\n');&quot;. Możesz zainteresować się funkcją <a href="http://www.cplusplus.com/reference/cstdio/scanf/"  class="postlink">scanf</a>.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 3 mar 2015, o 14:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leech10]]></name></author>
<updated>2015-03-03T13:42:26+01:00</updated>
<published>2015-03-03T13:42:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121733#p121733</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121733#p121733"/>
<title type="html"><![CDATA[Re: Pomoc w zrozumieniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121733#p121733"><![CDATA[
Hej<br /><br />Program działa dobrze. Skęk w tym, że nie bardzo rozumiem dlaczego.<br />Inaczej. Program z tym listingiem działa dobrze<br /><br />[syntax=c]while ((odp = getchar()) !='\n')<br />{<br />if (odp == '3')<br />printf(&quot;Dobrze, twoje haslo to Lemur :-)\n&quot;);<br /><br />else <br />printf(&quot;Zla odpowiedz, sprobuj jeszcze raz.\n&quot;);<br />while (getchar() != '\n')<br />continue;<br />}<br />retrun 0;[/syntax]<br /><br />z tym już nie <br /><br />[syntax=c]while ((odp = getchar()) !='\n')<br />{<br />if (odp == '3')<br />printf(&quot;Dobrze, twoje haslo to Lemur :-)\n&quot;);<br /><br />else <br />printf(&quot;Zla odpowiedz, sprobuj jeszcze raz.\n&quot;);<br />while (getchar() != '\n')<br />continue;<br />}[/syntax]<br /><br />Różnica polega na zastosowaniu return 0; ( jak dam tam break; też działa poprawnie).<br />Jaka wartość jest zwracana z tej pętli, albo co się dzieje, gdy nie dodam return 0; lub break;<br /><br />Gdy uzyje pierwszego kodu główna petla zakańcza działanie po podaniu prawidowej odpowiedzi. Gdy użyje drugiego. Odpowiedź mi się wyświetli ale po nacisnięciu enter wyświetli mi się równiez prośba o podanie T lub N czyli tak jakby program nie wyszedł z tej pierwszej, głównej petli. Dlaczego?<br />Pozdrawiam<br />Piotrek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=935">leech10</a> — 3 mar 2015, o 13:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2015-03-03T13:15:59+01:00</updated>
<published>2015-03-03T13:15:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121729#p121729</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121729#p121729"/>
<title type="html"><![CDATA[Re: Pomoc w zrozumieniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121729#p121729"><![CDATA[
Ogólnie nie wczytywałem się w problem, ale zastosowanie instrukcji &quot;return&quot; w programie głównym (main) kończy bezwzględnie jego działanie i rezultat zwracany jest to systemu lub aplikacji na której rzecz ten program został wykonany.<br />Pętla nie zwraca żadnej wartości, a użycie &quot;break&quot; kończy działanie pętli wewnętrznej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 3 mar 2015, o 13:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[leech10]]></name></author>
<updated>2015-03-03T13:06:48+01:00</updated>
<published>2015-03-03T13:06:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121728#p121728</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121728#p121728"/>
<title type="html"><![CDATA[Pomoc w zrozumieniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=10896&amp;p=121728#p121728"><![CDATA[
Witam<br /><br />Jakiś czas temu zaczałem się uczyć C ale później tak wyszło, że przestałem. Postanowilem wróćić do tego. Napisałem taki prosty program.  Działa, ale nie do końca rozumiem pewną kwestię. <br /><br />Chodzi o pętle while i if/else. Właściwie tą petle w pętli <br />jesli nie umieszcze po niej return 0; lub break; to program działa tak, że po udzieleniu poprawnej odpowiedzi wyswietli kimunikat &quot;Dobrze, twoje haslo to Lemur <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" />&quot; i następnie po wciśnieciu Enter wyświelta &quot;Podaj T lub N.&quot;  I teraz chciałbym wiedzieć jaką wartość dokładnie zwraca taka petla( podaje odpowiedź 3). To co wyrzuca po dopisaniu return 0; i break to wiem, ale jak to usunę to właśnie mnie zastanawia. Spełnienie if, przy braku return 0:/break;  zakańcza ta małą pętle ale powoduje coś, że duża się nie zakańcza i nie wiem co to dokładnie jest i w sumie dlaczego ta pierwsza pętla tez się bez return/break nie zakańcza skoro warunek początkowyif (ch == 't' || ch == 'T') jest spełniony. Gdy spełnie if (ch == 'n' || ch == 'N') to wszystko działa. <br /><br />Mam nadziej że za bardzo nie zamotałem<br /><br />[syntax=c]#include &lt;stdio.h&gt;<br /><br />int main(void)<br /><br />{<br /><br />char imie&#91;15&#93;;<br />char ch;<br />char odp;<br /><br />printf(&quot;Podaj swoje imie.\n&quot;);<br />scanf(&quot;%s&quot; , imie);<br />printf(&quot;Witaj, %s\n&quot; , imie);<br />printf(&quot;Na poczatek zabawy z programowaniem proponuje Ci rozwiazac proste zagadki logiczne.\n&quot;);<br />printf(&quot;Czy chcesz kontunuowac?.\n&quot;);<br />printf(&quot;T/N\n&quot;);<br />getchar();<br /><br />    <br /><br />while ((ch = getchar()) !='\n')<br /><br />{<br />if (ch == 't' || ch == 'T')<br />{<br />printf(&quot;5 pajakow lapie 5 much w ciągu 5 godzin.\n&quot;);<br />printf(&quot;Ile much lapie 100 pajakow w ciągu 100 godzin?.\n&quot;);<br />printf(&quot;Odpowiedz zapisz jako reszte z dzielenia wyniku przez 1997.\n&quot;);<br />getchar();<br /><br />while ((odp = getchar()) !='\n')<br />{<br />if (odp == '3')<br />printf(&quot;Dobrze, twoje haslo to Lemur :-)\n&quot;);<br /><br />else <br />printf(&quot;Zla odpowiedz, sprobuj jeszcze raz.\n&quot;);<br />while (getchar() != '\n')<br />continue;<br />}<br />return 0;<br />}<br />if (ch == 'n' || ch == 'N')<br />printf(&quot;Leniuch.\n&quot;);<br /><br />else<br />printf(&quot;Podaj T lub N.\n&quot;);<br />while (getchar() != '\n')<br />continue;<br />}<br /><br />getchar();<br /><br />return 0;<br />}[/syntax]<br /><br />pozdrawiam<br />Piotrek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=935">leech10</a> — 3 mar 2015, o 13:06</p><hr />
]]></content>
</entry>
</feed>