<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - C i C++</title>
<link>https://forum.pasja-informatyki.pl/questions/programowanie/c-plus-plus</link>
<description>Powered by Question2Answer</description>
<item>
<title>Jak uruchomić  import std; w clang 22.1 i gcc 15.2?</title>
<link>https://forum.pasja-informatyki.pl/599797/jak-uruchomic-import-std-w-clang-22-1-i-gcc-15-2</link>
<description>

&lt;p&gt;Stosuję te wszystkie opcje, niestety nie działa&lt;/p&gt;



&lt;pre&gt;
g++ -std=c++26 -fmodules -freflection -fsearch-include-path -fmodule-only -c bits/std.cc
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:bash;&quot;&gt;
clang++: warning: argument unused during compilation: '-freflection' [-Wunused-command-line-argument]
&amp;lt;source&amp;gt;:1:8: fatal error: module 'std' not found
    1 | import std;
      |        ^~~~
1 error generated.&lt;/pre&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
import std;

int main() {
    std::cout &amp;lt;&amp;lt; &quot;Hello, World!&quot; &amp;lt;&amp;lt; std::endl;
    return 0;
}&lt;/pre&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599797/jak-uruchomic-import-std-w-clang-22-1-i-gcc-15-2</guid>
<pubDate>Wed, 11 Mar 2026 15:57:42 +0000</pubDate>
</item>
<item>
<title>Wyświetlenie enum w println</title>
<link>https://forum.pasja-informatyki.pl/599796/wyswietlenie-enum-w-println</link>
<description>

&lt;p&gt;Witam, jak w nowoczesnym C++23 wyświetlić enumy? Funkcja std::println ich nie wyświetla?&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;print&amp;gt;

enum CardinalDirections {
    North = 25,
    South,
    East,
    West
};

int main()
{
    std::println(&quot;Wyświetlenie kierunków i ich wartości symbolicznych&quot;);
    std::println(&quot;Północ: {}&quot;, North);
    std::println(&quot;Południe: {}&quot;, South);
    std::println(&quot;Wschód: {}&quot;, East);
    std::println(&quot;Zachód: {}&quot;, West);
    // std::println(&quot;Wyświetlenie kierunków i ich wartości symbolicznych&quot;);
    // std::println(&quot;Północ: {}&quot;, static_cast&amp;lt;int&amp;gt;(North));
    // std::println(&quot;Południe: {}&quot;, static_cast&amp;lt;int&amp;gt;(South));
    // std::println(&quot;Wschód: {}&quot;, static_cast&amp;lt;int&amp;gt;(East));
    // std::println(&quot;Zachód: {}&quot;, static_cast&amp;lt;int&amp;gt;(West));

    CardinalDirections WindDirection = South;

//     if (WindDirection == North) {
//        std::println(&quot;Kierunek wiatru to Północ.&quot;);
//    } else if (WindDirection == South) {
//        std::println(&quot;Kierunek wiatru to Południe.&quot;);
//    } else if (WindDirection == East) {
//        std::println(&quot;Kierunek wiatru to Wschód.&quot;);
//    } else if (WindDirection == West) {
//        std::println(&quot;Kierunek wiatru to Zachód.&quot;);
//    } else {
//        std::println(&quot;Nieznany kierunek.&quot;);
//    }

    // std::println(&quot;Zmienna WindDirection = {}&quot;, WindDirection); // z tym nie działa
    std::println(&quot;Zmienna WindDirection = {}&quot;, static_cast&amp;lt;int&amp;gt;(WindDirection));
    return 0;
}&lt;/pre&gt;



&lt;p&gt;Ok, udało mi się uruchomić ten program, ale w std::cout, nie trzeba było korzystać z instrukcji if else.&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;

#include &amp;lt;iostream&amp;gt;
#include &amp;lt;format&amp;gt; // Użycie head de &amp;lt;format&amp;gt;

enum CardinalDirections {
    North = 25,
    South,
    East,
    West
};

int main()
{
    std::println(&quot;Wyświetlenie kierunków i ich wartości symbolicznych&quot;);
    std::println(&quot;Północ: {}&quot;, static_cast&amp;lt;int&amp;gt;(North));
    std::println(&quot;Południe: {}&quot;, static_cast&amp;lt;int&amp;gt;(South));
    std::println(&quot;Wschód: {}&quot;, static_cast&amp;lt;int&amp;gt;(East));
    std::println(&quot;Zachód: {}&quot;, static_cast&amp;lt;int&amp;gt;(West));

    CardinalDirections WindDirection = South;

    std::println(&quot;Zmienna WindDirection = {}&quot;, static_cast&amp;lt;int&amp;gt;(WindDirection));

    if (WindDirection == North) {
        std::println(&quot;Kierunek wiatru to Północ.&quot;);
    } else if (WindDirection == South) {
        std::println(&quot;Kierunek wiatru to Południe.&quot;);
    } else if (WindDirection == East) {
        std::println(&quot;Kierunek wiatru to Wschód.&quot;);
    } else if (WindDirection == West) {
        std::println(&quot;Kierunek wiatru to Zachód.&quot;);
    } else {
        std::println(&quot;Nieznany kierunek.&quot;);
    }

    return 0;
}&lt;/pre&gt;



&lt;p&gt;Mam jeszcze takie pytanie skąd pobrać binarne wersje kompilatorów GCC 16 i LLVM 23 / Clang 23?&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Stabilne wersje mogę pobrać stąd.&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&lt;a href=&quot;https://github.com/llvm/llvm-project/releases&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://github.com/llvm/llvm-project/releases&lt;/a&gt;
&lt;br&gt;
&lt;a href=&quot;https://github.com/xpack-dev-tools/gcc-xpack/releases/tag/v15.2.0-1/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://github.com/xpack-dev-tools/gcc-xpack/releases/tag/v15.2.0-1/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Mogę też wykorzystać inny kompilator Circle ale on zatrzymał się na standardzie C++20.&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&lt;a href=&quot;https://www.circle-lang.org/site/download/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.circle-lang.org/site/download/&lt;/a&gt;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599796/wyswietlenie-enum-w-println</guid>
<pubDate>Wed, 11 Mar 2026 15:53:46 +0000</pubDate>
</item>
<item>
<title>Gdy kopiuje pętle4 z folderu kurs_cpp_odc3 gdzie indziej - Unable to start debugging</title>
<link>https://forum.pasja-informatyki.pl/599676/gdy-kopiuje-petle4-folderu-kurs_cpp_odc3-gdzie-indziej-unable-to-start-debugging</link>
<description>Cześć Gdy kopiuje pętle4 z folderu kurs_cpp_odc3 gdzie indziej. Przy debugowanie pojawia się komunikat: Unable to start debugging. Unexpected GDB output from command&amp;quot;-environment-cd &amp;quot;C:\\Users\\...\imię&amp;quot; &amp;quot;C:Users\\...imię No such file or directory&lt;br /&gt;
&lt;br /&gt;
Gdy uruchamiam sam plik z folderu kurs_cpp_odc3 błąd nie występuje. Gdy podaję ścieżke do folderu program uruchamia się. Używam Visual Studio Code Windows 11 Home x64</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599676/gdy-kopiuje-petle4-folderu-kurs_cpp_odc3-gdzie-indziej-unable-to-start-debugging</guid>
<pubDate>Sun, 15 Feb 2026 12:10:24 +0000</pubDate>
</item>
<item>
<title>Nie mogę zrobić programu JEBUT z kursu pasja informatyki C++</title>
<link>https://forum.pasja-informatyki.pl/599658/nie-moge-zrobic-programu-jebut-z-kursu-pasja-informatyki-c</link>
<description>

&lt;p&gt;Hej robię programik z tego poradnika:
&lt;br&gt;

&lt;br&gt;
&lt;a href=&quot;https://www.youtube.com/watchv=y6GOYVTVvqo&amp;amp;list=PLOYHgt8dIdoxx0Y5wzs7CFpmBzb40PaDo&amp;amp;index=4&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watchv=y6GOYVTVvqo&amp;amp;list=PLOYHgt8dIdoxx0Y5wzs7CFpmBzb40PaDo&amp;amp;index=4&lt;/a&gt;
&lt;br&gt;

&lt;br&gt;
Nie działa System (&quot;cls&quot;) w Visual Studio Code. W terminalu Windowsowym działa a w Visual Studio Code nie działa dlaczego?&lt;/p&gt;



&lt;p&gt;Używam Windows 11 Home x64.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;windows.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;cstdlib&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;conio.h&amp;gt;

using namespace std;


int main()
{
    for (int i=15; i&amp;gt;=0; i--)
    {
    
    Sleep(1000);
    system (&quot;cls&quot;);

    cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; endl;
    }
    cout &amp;lt;&amp;lt; &quot;JEBUT&quot;;

    return 0;
}
&lt;/pre&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599658/nie-moge-zrobic-programu-jebut-z-kursu-pasja-informatyki-c</guid>
<pubDate>Sat, 14 Feb 2026 15:51:17 +0000</pubDate>
</item>
<item>
<title>Ocena kodu - dwa małe projekty (Github)</title>
<link>https://forum.pasja-informatyki.pl/599533/ocena-kodu-dwa-male-projekty-github</link>
<description>

&lt;p&gt;Siema, ostatnio napisałem takie 2 małe projekty jako wstęp do troszkę większych. Chciałbym poprosić Was o ocenę kodu, np. czy mam wyrobione jakieś złe nawyki, czy dobrze rozwiązałem problem cross-platform'owości (czyli że program jest dostępny na wiele systemów operacyjnych) i jakieś ogólne opinie na ich temat. Każdy komentarz jest mile widziany. Polecam skompilować i wypróbować samemu po spojrzeniu w kod :D&lt;/p&gt;



&lt;p&gt;Link do projektów:&amp;nbsp;&lt;a href=&quot;https://github.com/polandonion?tab=repositories&quot; rel=&quot;nofollow&quot;&gt;https://github.com/polandonion?tab=repositories&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;PS. zapomniałem dodać, ale to chyba oczywiste - jeśli macie pomysł na jakieś zmiany/ulepszenia w kodzie, to śmiało podrzucajcie PR&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599533/ocena-kodu-dwa-male-projekty-github</guid>
<pubDate>Mon, 05 Jan 2026 13:20:02 +0000</pubDate>
</item>
<item>
<title>Kompilacja Code::Blocks</title>
<link>https://forum.pasja-informatyki.pl/599368/kompilacja-code-blocks</link>
<description>

&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot; ?&amp;gt;
&amp;lt;CodeBlocks_project_file&amp;gt;
	&amp;lt;FileVersion major=&quot;1&quot; minor=&quot;6&quot; /&amp;gt;
	&amp;lt;Project&amp;gt;
		&amp;lt;Option title=&quot;test c++23&quot; /&amp;gt;
		&amp;lt;Option pch_mode=&quot;2&quot; /&amp;gt;
		&amp;lt;Option compiler=&quot;gcc&quot; /&amp;gt;
		&amp;lt;Build&amp;gt;
			&amp;lt;Target title=&quot; Quick-Debug&quot;&amp;gt;
				&amp;lt;Option output=&quot;bin/Quick-Debug/test c++23&quot; prefix_auto=&quot;1&quot; extension_auto=&quot;1&quot; /&amp;gt;
				&amp;lt;Option working_dir=&quot;bin/Quick-Debug&quot; /&amp;gt;
				&amp;lt;Option type=&quot;1&quot; /&amp;gt;
				&amp;lt;Option compiler=&quot;cb1_mingw&quot; /&amp;gt;
				&amp;lt;Compiler&amp;gt;
					&amp;lt;Add option=&quot;-std=c++20 -g -O0 -Wall -Wextra -Wpedantic&quot; /&amp;gt;
				&amp;lt;/Compiler&amp;gt;
			&amp;lt;/Target&amp;gt;
			&amp;lt;Target title=&quot;Analysis-Clang&quot;&amp;gt;
				&amp;lt;Option output=&quot;bin/Analysis-Clang/test c++23&quot; prefix_auto=&quot;1&quot; extension_auto=&quot;1&quot; /&amp;gt;
				&amp;lt;Option working_dir=&quot;bin/Analysis-Clang&quot; /&amp;gt;
				&amp;lt;Option type=&quot;1&quot; /&amp;gt;
				&amp;lt;Option compiler=&quot;cb2_clang&quot; /&amp;gt;
				&amp;lt;Compiler&amp;gt;
					&amp;lt;Add option=&quot;-std=c++20 -g -O0 -Wall -Wextra -Wpedantic -Wshadow -Wconversion -fsanitize=address -fsanitize=undefined&quot; /&amp;gt;
				&amp;lt;/Compiler&amp;gt;
			&amp;lt;/Target&amp;gt;
			&amp;lt;Target title=&quot;Release-GCC&quot;&amp;gt;
				&amp;lt;Option output=&quot;bin/Release-GCC/test c++23&quot; prefix_auto=&quot;1&quot; extension_auto=&quot;1&quot; /&amp;gt;
				&amp;lt;Option working_dir=&quot;bin/Release-GCC/&quot; /&amp;gt;
				&amp;lt;Option type=&quot;1&quot; /&amp;gt;
				&amp;lt;Option compiler=&quot;cb1_mingw&quot; /&amp;gt;
				&amp;lt;Compiler&amp;gt;
					&amp;lt;Add option=&quot;-std=c++20 -O2 -march=native -flto -DNDEBUG -Wall -Wextra -Wpedantic&quot; /&amp;gt;
				&amp;lt;/Compiler&amp;gt;
			&amp;lt;/Target&amp;gt;
			&amp;lt;Target title=&quot;15.2.0&quot;&amp;gt;
				&amp;lt;Option output=&quot;bin/15.2.0/test c++23&quot; prefix_auto=&quot;1&quot; extension_auto=&quot;1&quot; /&amp;gt;
				&amp;lt;Option working_dir=&quot;bin/15.2.0&quot; /&amp;gt;
				&amp;lt;Option type=&quot;1&quot; /&amp;gt;
				&amp;lt;Option compiler=&quot;copy_of_1_mingw&quot; /&amp;gt;
				&amp;lt;Compiler&amp;gt;
					&amp;lt;Add option=&quot;-std=c++23 -O2 -march=native -flto -DNDEBUG -Wall -Wextra -Wpedantic&quot; /&amp;gt;
				&amp;lt;/Compiler&amp;gt;
			&amp;lt;/Target&amp;gt;
		&amp;lt;/Build&amp;gt;
		&amp;lt;Compiler&amp;gt;
			&amp;lt;Add option=&quot;-Wall&quot; /&amp;gt;
			&amp;lt;Add option=&quot;-fexceptions&quot; /&amp;gt;
		&amp;lt;/Compiler&amp;gt;
		&amp;lt;Unit filename=&quot;main.cpp&quot; /&amp;gt;
		&amp;lt;Extensions&amp;gt;
			&amp;lt;code_completion /&amp;gt;
			&amp;lt;envvars /&amp;gt;
			&amp;lt;debugger /&amp;gt;
			&amp;lt;lib_finder disable_auto=&quot;1&quot; /&amp;gt;
		&amp;lt;/Extensions&amp;gt;
	&amp;lt;/Project&amp;gt;
&amp;lt;/CodeBlocks_project_file&amp;gt; &lt;/pre&gt;



&lt;p&gt;Chcę by szybko tworzyć zapasowe kopie projektu (bez git tylko lokalnie C::B) i mieć możliwość szybkiego ustawienia flag kompilatora. AI proponuje CMake i script.&lt;/p&gt;



&lt;p&gt;Jakie są wasze propozycje?&lt;/p&gt;



&lt;p&gt;Czy ustawienie flag w ten sposób na sens?&lt;/p&gt;



&lt;p&gt;Taki sposób kompilacji 3 typy główne ma sens?&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599368/kompilacja-code-blocks</guid>
<pubDate>Wed, 19 Nov 2025 21:04:51 +0000</pubDate>
</item>
<item>
<title>[C++]Potrzebuje pomocy z wyswietlaniem wyniku na pionowe kolumny</title>
<link>https://forum.pasja-informatyki.pl/599295/c-potrzebuje-pomocy-z-wyswietlaniem-wyniku-na-pionowe-kolumny</link>
<description>#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;iomanip&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int n;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char wybor;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&amp;quot;Podaj liczbe n: &amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cin&amp;gt;&amp;gt;n;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&amp;quot;Wybierz sposob oblizenia za pomoca skrotu(m-mnozenie/d-dzielenie): &amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cin&amp;gt;&amp;gt;wybor;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch(wybor){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 'm':&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(n&amp;gt;0){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int i=1;i&amp;lt;=n;i++){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int j=1;j&amp;lt;=n;j++){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;i*j&amp;lt;&amp;lt;&amp;quot; |&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&amp;quot; &amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int i=1;i&amp;gt;=n;i--){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int j=-1;j&amp;gt;=n;j--){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;i*j&amp;lt;&amp;lt;&amp;quot; |&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&amp;quot; &amp;quot;&amp;lt;&amp;lt;endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 'd':&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(n&amp;gt;0){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int i=1;i&amp;lt;=n;i++){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int j=1;j&amp;lt;=n;j++){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;i/j&amp;lt;&amp;lt;&amp;quot; | &amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int i=1;i&amp;gt;=n;i--){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(int j=-1;j&amp;gt;=n;j--){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;i/j&amp;lt;&amp;lt;&amp;quot; | &amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; &amp;quot;Niepoprawny wybor. Wybierz 'm' lub 'd'.&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;
}</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599295/c-potrzebuje-pomocy-z-wyswietlaniem-wyniku-na-pionowe-kolumny</guid>
<pubDate>Mon, 20 Oct 2025 17:11:17 +0000</pubDate>
</item>
<item>
<title>Pomoc w zadaniu &quot;... albo psikus!&quot; z XV OIJ</title>
<link>https://forum.pasja-informatyki.pl/599063/pomoc-w-zadaniu-albo-psikus-z-xv-oij</link>
<description>

&lt;p&gt;Witam, mam problem z w/w zadaniem. Wydaje mi się, że myślę poprawnie jeśli chodzi o to zadanie, ale dostaję tylko 18% (reszta to błędne wyniki), porównując to do tzw. brute force algorytmu, za który dostałem 40% (reszta to przekroczenie czasu). Wygląda na to, że rzeczywiście mój algorytm jest błędny. Próbowałem szukać przykładów dla których brute force odpowiada inaczej niż ten nowy algorytm, ale nie znalazłem nic :(&lt;/p&gt;



&lt;p&gt;Nic mi nie przychodzi na myśl w tym momencie, i też nie zadaje tego pytania dlatego, żeby dostać gotowca. Po prostu od czasu do czasu lubię sobie poprogramować i coś nie mogę dalej popchnąć tego zadania. Jakby ktoś mógł podać przykład dla którego mój algorytm odpowiada źle, albo jeżeli to będzie za trudne, to jakoś naprowadzić na ścieżkę do poprawnego rozumowania. Dzięki z góry panowie :D&lt;/p&gt;



&lt;p&gt;PS: Może to być bardzo pomocne, albo i też bezużyteczne, ale zauważyłem, że każdy błąd objawia się tym, że mój algorytm daje mniejszy wynik niż powinien.&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;

using namespace std;

int cuk[1000000], sum[1000000];

int main() {
    int n;
    cin &amp;gt;&amp;gt; n;
    for (int i = 0; i &amp;lt; n; i ++)
        cin &amp;gt;&amp;gt; cuk[i];

    // inicjacja tablicy sum prefiksowych
    sum[0] = cuk[0];
    for (int i = 1; i &amp;lt; n; i ++)
        sum[i] = sum[i - 1] + cuk[i];

    int par = 0, npa = 0;
    long long ile = 0;
    for (int i = 0; i &amp;lt; n; i ++) {
        // tutaj jeżeli sum[i] będzie parzyste to
        // ziekszy sie par, inaczej zwiekszam npa
        par += (sum[i] % 2 == 0);
        npa += (sum[i] % 2 == 1);

        // glowna czesc algorytmu; jeżeli spotkam liczbe parzysta, to sprawdzam
        // ile poprzednio napotkalem liczb parzystych. tutaj wiem, ze kilka osob
        // zauwazy ze &quot;blednie&quot; dodaje par zamiast par - 1, ale tutaj chodzi o
        // to, ze musze jeszcze dodac jeden przypadek, czyli suma cuk od 0 do i.
        // wyjdzie par - 1 + 1 czyli par.
        // no a jezeli napotkam liczbe nieparzysta to musze spojrzec ile poprzednio
        // spotkalem liczb nieparzystych, czyli dodaje npa - 1; tutaj juz nie mamy
        // tego przypadku, ze suka cuk od 0 do i bedzie parzysta, bo sum[i] jest
        // nieparzysta.
        if (sum[i] % 2 == 0)
            ile += par;
        else
            ile += npa - 1;
    }
    cout &amp;lt;&amp;lt; ile &amp;lt;&amp;lt; endl;
}&lt;/pre&gt;

</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/599063/pomoc-w-zadaniu-albo-psikus-z-xv-oij</guid>
<pubDate>Fri, 29 Aug 2025 12:06:43 +0000</pubDate>
</item>
<item>
<title>Kompilacja open gothic</title>
<link>https://forum.pasja-informatyki.pl/598976/kompilacja-open-gothic</link>
<description>Cześć, czy może ktoś z was kompilował projekt open gothic ?&lt;br /&gt;
&lt;br /&gt;
Zainteresował mnie ten projekt ale nie byłem w stanie go kompilować.&lt;br /&gt;
&lt;br /&gt;
Próbowałem na visual studio jednak brakuje mu bibliotek.</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598976/kompilacja-open-gothic</guid>
<pubDate>Fri, 01 Aug 2025 15:47:05 +0000</pubDate>
</item>
<item>
<title>Nokia - C++ Developer Summer Trainee</title>
<link>https://forum.pasja-informatyki.pl/598608/nokia-c-developer-summer-trainee</link>
<description>Witam,&lt;br /&gt;
&lt;br /&gt;
Mam zapytanie odnośnie testów w rekrutacji na stanowiska stażowe jako C++ Developer w Nokii. &lt;br /&gt;
Czy podchodził ktoś do takiego testu? &lt;br /&gt;
Jak on mniej więcej wygląda? &lt;br /&gt;
Jakie zagadnienia najlepiej sobie przed takim testem przypomnieć?&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598608/nokia-c-developer-summer-trainee</guid>
<pubDate>Tue, 29 Apr 2025 22:22:59 +0000</pubDate>
</item>
<item>
<title>Wiszące referencje w C++</title>
<link>https://forum.pasja-informatyki.pl/598539/wiszace-referencje-w-c</link>
<description>

&lt;p&gt;Ma ktoś pomyśł jak naprawić problem wiszących referencji w metodzie `menu::add_submenu`? Jak w ogóle poprawić można mój kod?&lt;/p&gt;



&lt;p&gt;main.cpp&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
// the purpose of the below code is to test menu class

#include &quot;menu.h&quot;
#include &amp;lt;cstdlib&amp;gt;
#include &amp;lt;iostream&amp;gt;

int main() {
    std::cin.exceptions(std::cin.eofbit);
    try {
        pt::menu main_menu{&quot;Main menu&quot;};
        main_menu.add_item(&quot;item 1&quot;,
                           []() { std::cout &amp;lt;&amp;lt; &quot;item 1&quot; &amp;lt;&amp;lt; std::endl; });
        main_menu.add_item(&quot;item 2&quot;,
                           []() { std::cout &amp;lt;&amp;lt; &quot;item 2&quot; &amp;lt;&amp;lt; std::endl; });
        {
            pt::menu submenu{&quot;Submenu&quot;};
            main_menu.add_submenu(submenu);
        }
        main_menu.loop();
    } catch (const std::exception&amp;amp; e) {
        std::cerr &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; '\n';
        return EXIT_FAILURE;
    }
    std::cout &amp;lt;&amp;lt; &quot;Good bye!\n&quot;;
    return 0;
}
&lt;/pre&gt;



&lt;p&gt;menu.h&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#ifndef MENU_H_
#define MENU_H_

#include &amp;lt;functional&amp;gt;
#include &amp;lt;iosfwd&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;utility&amp;gt;
#include &amp;lt;vector&amp;gt;

namespace pt {

struct menu_item {
    menu_item(std::string title_val, std::function&amp;lt;void()&amp;gt; action_val);

    friend std::ostream&amp;amp; operator&amp;lt;&amp;lt;(std::ostream&amp;amp; lhs, const menu_item&amp;amp; rhs);

    std::string title{};
    std::function&amp;lt;void()&amp;gt; action{};
};

class menu {
 public:
    explicit menu(std::string title_val, std::string description_val = &quot;&quot;,
                  std::vector&amp;lt;menu_item&amp;gt; items_val = {});

    void add_item(menu_item item);
    void add_item(std::string title_val, std::function&amp;lt;void()&amp;gt; action);
    void add_item_at(int index, menu_item item);
    void add_item_at(int index, std::string title_val,
                     std::function&amp;lt;void()&amp;gt; action);
    void remove_item(int index);

    void add_submenu(menu menu_val);
    void add_submenu(std::string title_val, menu menu_val);
    void add_submenu_at(int index, menu menu_val);
    void add_submenu_at(int index, std::string title_val, menu menu_val);

    void set_title(std::string title_val);
    void set_description(std::string description_val);

    void loop() const;

 private:
    // helper functions
    void print_choices() const;
    char read_choice() const;
    void check_index(std::size_t index) const;
    void print_title(std::string_view title) const;

    // wrapper function for menu::loop
    std::function&amp;lt;void()&amp;gt; invoke_menu_loop(const menu&amp;amp; menu_val);

    static constexpr char quit_choice = 'q';
    static int nesting_level;
    std::string title{};
    std::string description{};
    std::vector&amp;lt;menu_item&amp;gt; items{};
};

}  // namespace pt

#endif  // MENU_H_
&lt;/pre&gt;



&lt;p&gt;menu.cpp&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &quot;menu.h&quot;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;sstream&amp;gt;
#include &amp;lt;stdexcept&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;utility&amp;gt;
#include &amp;lt;vector&amp;gt;

namespace pt {

// menu_item constructors
menu_item::menu_item(std::string title_val, std::function&amp;lt;void()&amp;gt; action_val)
    : title{std::move(title_val)}, action{std::move(action_val)} {}

// menu_item struct i/o operators
std::ostream&amp;amp; operator&amp;lt;&amp;lt;(std::ostream&amp;amp; lhs, const menu_item&amp;amp; rhs) {
    return lhs &amp;lt;&amp;lt; rhs.title;
}

// menu class constructors
menu::menu(std::string title_val, std::string description_val,
           std::vector&amp;lt;menu_item&amp;gt; items_val)
    : title{std::move(title_val)}, description{std::move(description_val)},
      items{std::move(items_val)} {}

// menu class static variables
int menu::nesting_level{0};

// menu class public interface
void menu::add_item(menu_item item) { items.push_back(std::move(item)); }

void menu::add_item(std::string title_val, std::function&amp;lt;void()&amp;gt; action_val) {
    items.emplace_back(std::move(title_val), std::move(action_val));
}

void menu::add_item_at(int index, menu_item item) {
    check_index(index);
    items.insert(items.begin() + index, std::move(item));
}

void menu::add_item_at(int index, std::string title_val,
                       std::function&amp;lt;void()&amp;gt; action) {
    check_index(index);
    items.emplace(items.begin() + index, std::move(title_val),
                  std::move(action));
}

void menu::remove_item(int index) {
    check_index(index);
    items.erase(items.begin() + index);
}

void menu::add_submenu(menu menu_val) {
    items.emplace_back(menu_val.title, invoke_menu_loop(menu_val));
}

void menu::add_submenu(std::string title_val, menu menu_val) {
    items.emplace_back(title_val, invoke_menu_loop(menu_val));
}

void menu::add_submenu_at(int index, menu menu_val) {
    check_index(index);
    items.insert(items.begin() + index,
                 menu_item{menu_val.title, invoke_menu_loop(menu_val)});
}

void menu::add_submenu_at(int index, std::string title_val, menu menu_val) {
    check_index(index);
    items.insert(items.begin() + index,
                 menu_item{title_val, invoke_menu_loop(menu_val)});
}

void menu::set_title(std::string title_val) { title = std::move(title_val); }

void menu::set_description(std::string description_val) {
    description = std::move(description_val);
}

void menu::loop() const {
    bool active{true};
    ++nesting_level;
    while (active) {
        print_title(title);
        if (!description.empty()) {
            std::cout &amp;lt;&amp;lt; std::endl;
            std::cout &amp;lt;&amp;lt; description;
            std::cout &amp;lt;&amp;lt; std::endl;
        }
        char choice{read_choice()};
        if (choice == quit_choice) {
            --nesting_level;
            active = false;
        } else {
            std::cout &amp;lt;&amp;lt; '\n';
            std::size_t index{static_cast&amp;lt;std::size_t&amp;gt;(choice) - '0'};
            if (index &amp;gt; items.size()) {
                std::cout &amp;lt;&amp;lt; &quot;Invalid choice!\n&quot;;
                continue;
            }
            // call function bound to menu item
            items[choice - '1'].action();
            // wait until user press the enter key
            std::cout &amp;lt;&amp;lt; &quot;\nPress enter to continue...&quot; &amp;lt;&amp;lt; std::endl;
            std::string line;
            std::getline(std::cin, line);
        }
    }
}

// menu class private functions
void menu::print_choices() const {
    for (std::size_t i = 0; i &amp;lt; items.size(); ++i) {
        std::cout &amp;lt;&amp;lt; i + 1 &amp;lt;&amp;lt; &quot;) &quot; &amp;lt;&amp;lt; items[i] &amp;lt;&amp;lt; '\n';
    }
    std::cout &amp;lt;&amp;lt; &quot;q) &quot; &amp;lt;&amp;lt; (nesting_level &amp;gt; 1 ? &quot;Back&quot; : &quot;Quit&quot;);
    std::cout &amp;lt;&amp;lt; std::endl;
}

char menu::read_choice() const {
    std::string user_input;
    char choice;
    bool valid{false};

    std::cout &amp;lt;&amp;lt; &quot;What do you want to do?\n&quot;;
    do {
        print_choices();
        std::cout &amp;lt;&amp;lt; &quot;Your choice: &quot;;
        std::getline(std::cin, user_input);
        if (user_input.length() &amp;gt; 1 || user_input.empty()) {
            std::cout &amp;lt;&amp;lt; &quot;Please enter the valid choice.\n&quot;;
            continue;
        }
        choice = tolower(user_input.at(0));
        if ((choice - '1') &amp;lt; 0 ||
            (static_cast&amp;lt;std::size_t&amp;gt;(choice - '1') &amp;gt;= items.size() &amp;amp;&amp;amp;
             (choice != quit_choice))) {
            std::cout &amp;lt;&amp;lt; &quot;Invalid choice!\n&quot;;
        } else {
            valid = true;
        }
    } while (!valid);
    return choice;
}

void menu::check_index(std::size_t index) const {
    const std::size_t max_allowed_idx{items.size() - 1};
    if (index &amp;gt; max_allowed_idx) {
        std::ostringstream oss;
        oss &amp;lt;&amp;lt; &quot;index value must be between &quot; &amp;lt;&amp;lt; index &amp;lt;&amp;lt; &quot; and &quot;
            &amp;lt;&amp;lt; max_allowed_idx;
        throw std::out_of_range{oss.str()};
    }
}

void menu::print_title(std::string_view title) const {
    std::size_t title_len = title.size();
    std::size_t width = title_len + 4;
    for (std::size_t i = 0; i &amp;lt; width; ++i) {
        std::cout &amp;lt;&amp;lt; &quot;*&quot;;
    }
    std::cout &amp;lt;&amp;lt; &quot;\n* &quot; &amp;lt;&amp;lt; title &amp;lt;&amp;lt; &quot; *\n&quot;;
    for (std::size_t i = 0; i &amp;lt; width; ++i) {
        std::cout &amp;lt;&amp;lt; &quot;*&quot;;
    }
    std::cout &amp;lt;&amp;lt; std::endl;
}

// wrapper function for menu::loop
std::function&amp;lt;void()&amp;gt; menu::invoke_menu_loop(const menu&amp;amp; the_menu) {
    return [&amp;amp;the_menu]() { the_menu.loop(); };
}

}  // namespace pt
&lt;/pre&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598539/wiszace-referencje-w-c</guid>
<pubDate>Wed, 23 Apr 2025 06:10:57 +0000</pubDate>
</item>
<item>
<title>Dobre źródła do nauki C++</title>
<link>https://forum.pasja-informatyki.pl/598537/dobre-zrodla-do-nauki-c</link>
<description>Podrzuci ktoś linki do sprawdzonych źródeł do nauki C++ jak np. stronka cppreference? Czy to prawda że cplusplus należy unikać? Co sądzicie o learncpp? Czy unikalibyście stronek typu medium, dev.to, odpowiedzi na quora? A reddit?&lt;br /&gt;
&lt;br /&gt;
Generalnie to potrzebuję jak najwięcej linków i rad gdzie szukać wskazówek, rozwiązań różnych problemów, opisu co do czego sluży w C++ itp. Dobrze jakby te źródła były na bieżąco aktualizowane i zgodne ze standardem C++</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598537/dobre-zrodla-do-nauki-c</guid>
<pubDate>Wed, 23 Apr 2025 05:38:38 +0000</pubDate>
</item>
<item>
<title>Struktura projektu w C++</title>
<link>https://forum.pasja-informatyki.pl/598536/struktura-projektu-w-c</link>
<description>Potrzebuję wskazówek jak ogarnąć strukturę większych programów, w sensie podział na pliki nagłówków, testy, źródełka, dokumentację itd. Macie jakieś sensowne sprawdzone sposoby na to? Pytanie kieruję do osób, które mają już trochę doświadczenia z C++&lt;br /&gt;
&lt;br /&gt;
Pytam bo mi się zaczął programik rozrastać i trzymanie wszystkiego w jednym katalogu z Makefile, CPPLINT.cfg itd. jest mało praktyczne</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598536/struktura-projektu-w-c</guid>
<pubDate>Wed, 23 Apr 2025 05:34:30 +0000</pubDate>
</item>
<item>
<title>funkcje podstawy małe pytanko c++</title>
<link>https://forum.pasja-informatyki.pl/598510/funkcje-podstawy-male-pytanko-c</link>
<description>

&lt;p&gt;cześć otóż ostatnio mnie natchnęło i zacząłem bawić się w c++ kiedyś mnie to bawiło i bawi dalej ale&amp;nbsp;szybko porzucam jeszcze teraz z pracą na głowie ojej, mianowicie:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;ctime&amp;gt;
using namespace std;

int wylosuj(int start, int stop)
{
    int wylosowana = rand() % stop + start;

   return wylosowana;
}
int sprawdz(int a, int b)
{
    int wynik=0;
    for(int i=a; i&amp;lt;b; i++)
    {
        wynik++;
    }
    return wynik;

}


int main()
{
    srand(time(NULL));

    cout &amp;lt;&amp;lt; &quot;podaj przedzial liczb do wylosowania (od do)\n&quot;;
    int a,b;
    cout &amp;lt;&amp;lt; &quot;od: &quot;;
    cin &amp;gt;&amp;gt; a;
    cout &amp;lt;&amp;lt; &quot;do: &quot;;
    cin &amp;gt;&amp;gt; b;
    b += 1; //czemu nie dziala to po dodaniu 1 w funkcji
    b = sprawdz(a, b);
    cout &amp;lt;&amp;lt; &quot;tu: &quot; &amp;lt;&amp;lt; b &amp;lt;&amp;lt; endl;// test
    for(int i = 0; i&amp;lt;20; i++){
    int wylosowana;
    wylosowana= wylosuj(a,b);
    cout &amp;lt;&amp;lt; wylosowana &amp;lt;&amp;lt; endl;
    }

    return 0;
}
&lt;/pre&gt;



&lt;p&gt;tak jak w kodzie czemu nie działa b += 1 w funkcji ?&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598510/funkcje-podstawy-male-pytanko-c</guid>
<pubDate>Thu, 17 Apr 2025 15:00:23 +0000</pubDate>
</item>
<item>
<title>Wskaźniki NULL w C i C++</title>
<link>https://forum.pasja-informatyki.pl/598482/wskazniki-null-w-c-i-c</link>
<description>

&lt;p&gt;Czytam &lt;a href=&quot;https://stackoverflow.com/questions/1296843/what-is-the-difference-between-null-0-and-0&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://stackoverflow.com/questions/1296843/what-is-the-difference-between-null-0-and-0&lt;/a&gt; i nadal nie potrafię zrozumieć dlaczego poniższe fragmenty kodu są nieprawidłowe&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
// 1
int mojnull = 0;
int* wsk = funkcja_ktora_moze_zwrocic_wsk_null();
if (wsk == mojnull) {
    std::cerr &amp;lt;&amp;lt; &quot;Wystapil blad!\n&quot;;
    std::abort();
}
// 2 - na platformie gdzie wskaznik null jest reprezentowany przez 0xDEADBEEF
#define MYNULL 0xDEADBEEF
int* wsk = funkcja_ktora_moze_zwrocic_wsk_null();
if (wsk == MYNULL) {
    std::cerr &amp;lt;&amp;lt; &quot;Wystapil blad!\n&quot;;
    std::abort();
}&lt;/pre&gt;



&lt;p&gt;Wyjaśni mi ktoś łopatologicznie?&lt;/p&gt;



&lt;p&gt;Przecież wskaźnik to zmienna przechowująca adres pamięci a w 1 adresem tym jest zero i mojnull też ma wartość zero, więc obie zmienne to obiekty przechowujące wartość zero tylko innego typu.&lt;/p&gt;



&lt;p&gt;W 2 wskaźnik pusty jest reprezentowany przez 0xDEADBEEF na nietypowej platformie, za MYNULL po przetworzeniu przez preprocesor jest podstawiane 0xDEADBEEF i jest to porównywane z wartością zmiennej wsk a 0xDEADBEEF jest przecież wartością reprezentującą wskaźnik pusty na tejże platformie. Więc 0 to chyba powinien być konstrukt synktatyczny, który odpowiada 0xDEADBEEF.&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598482/wskazniki-null-w-c-i-c</guid>
<pubDate>Sat, 12 Apr 2025 18:02:43 +0000</pubDate>
</item>
<item>
<title>Czy opierać stosy, kolejki na istniejącej strukturze danych czy napisać całkowicie od zera?</title>
<link>https://forum.pasja-informatyki.pl/598470/czy-opierac-stosy-kolejki-istniejacej-strukturze-danych-napisac-calkowicie-zera</link>
<description>Jak w temacie, lepiej oprzeć na array liście i wywoływać odpowiednie metody, czy całkowicie napisać od zera to co potrzebne do implementacji ADT?</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598470/czy-opierac-stosy-kolejki-istniejacej-strukturze-danych-napisac-calkowicie-zera</guid>
<pubDate>Sat, 12 Apr 2025 15:53:49 +0000</pubDate>
</item>
<item>
<title>Semantyka przenoszenia w C++ - trzy pytania</title>
<link>https://forum.pasja-informatyki.pl/598379/semantyka-przenoszenia-w-c-trzy-pytania</link>
<description>

&lt;p&gt;Hej,&lt;/p&gt;



&lt;p&gt;Dlaczego w przypadku używania std::move nie tworzy się osobnych konstruktorów tak jak pokazano to w // 1 i w // 2 tylko zwyczajnie używa się przekazywania przez wartość?&lt;/p&gt;



&lt;p&gt;Przypadek // 1 w którym przekazujemy zwykłe l-wartości jestem w stanie zrozumieć, wtedy po prostu konwertujemy f i l za pomocą std::move na r-wartości i wywołujemy odpowiednie konstruktory przenoszące odpowiadających im klas skoro mamy r-wartości (std::move dokonuje konwersji przekazanego mu argumentu na r-wartość żeby można było go przenieść).&lt;/p&gt;



&lt;p&gt;Nie rozumiem natomiast tego czemu nie tworzymy analogicznej funkcji jak pokazano w // 2 przyjmującej referencje do r-wartości. Przecież przekazując przez wartość std::string(&quot;Andrzej&quot;) do konstruktora // 1 skoro mamy przekazywanie przez wartość a nie referencję to i tak dokonywana jest kopia tego obiektu. Konkretnie tworzona jest obiekt tymczasowy i to co jest w tym obiekcie jest przenoszone do firstname i lastname. Gdyby użyć referencji do r-wartości to nie byłoby tworzonego żadnego obiektu tymczasowego.&lt;/p&gt;



&lt;p&gt;Drugie moje pytanie dotyczy czy dobrze rozumiem dlaczego w kodzie załączonym do tego pytania mamy na wyjściu , , 12. Według mnie wyjście jest takie ponieważ w przypadku std::string zostały przeniesione zasoby powiązane z obiektem natomiast age nie otrzymał przypadkowej wartości dlatego że w tym przypadku age nie jest obiektem zarządzanym. Semantyka przenoszenia ma sens jedynie w odniesieniu do zasobów alokowanych dynamicznie przez new i delete lub w podobny sposób, zarządzanych przez instancje klas. W przypadku zwykłych intów czy floatów nie mamy odpowiedzialności za zwolnienie obiektu. Przeniesienie polega na transferze odpowiedzialności za zwolnienie zasobu. Ddobrze to rozumiem?&lt;/p&gt;



&lt;p&gt;Trzecie pytanie dotyczy tego czy referencje do r-wartości wewnętrznie też są implementowane jako wskaźniki tak jak zwykłe l-wartościowe referencje.&lt;/p&gt;



&lt;p&gt;Dziękuję i pozdrawiam,
&lt;br&gt;
whiteman808&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
~ ❯ cat main.cpp                                                                                                                                ✘ INT 19:30:01
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;

class person {
public:
    person() : firstname{}, lastname{}, age{0} {}
    person(std::string f, std::string l, int a) // 1
        : firstname{std::move(f)}, lastname{std::move(l)}, age{a} {
        std::cout &amp;lt;&amp;lt; f &amp;lt;&amp;lt; &quot;, &quot; &amp;lt;&amp;lt; l &amp;lt;&amp;lt; &quot;, &quot; &amp;lt;&amp;lt; a &amp;lt;&amp;lt; '\n';
    }
    person(std::string&amp;amp;&amp;amp; f, std::string&amp;amp;&amp;amp; l, int a) // 2
        : firstname{std::move(f)}, lastname{std::move(l)}, age{a} {
        std::cout &amp;lt;&amp;lt; f &amp;lt;&amp;lt; &quot;, &quot; &amp;lt;&amp;lt; l &amp;lt;&amp;lt; &quot;, &quot; &amp;lt;&amp;lt; a &amp;lt;&amp;lt; '\n';
    }
    person(const person&amp;amp; p) { // konstruktor kopiujący
        firstname = p.firstname;
        lastname = p.lastname;
        age = p.age;
    }
private:
    std::string firstname;
    std::string lastname;
    int age;
};

int main() {
    person p{&quot;Jan&quot;, &quot;Kowalski&quot;, 12};
    return 0;
}
~ ❯ ./main                                                                                                                                            19:30:04
, , 12
&lt;/pre&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598379/semantyka-przenoszenia-w-c-trzy-pytania</guid>
<pubDate>Thu, 27 Mar 2025 19:09:19 +0000</pubDate>
</item>
<item>
<title>Nazewnictwo obiektów w C i C++</title>
<link>https://forum.pasja-informatyki.pl/598378/nazewnictwo-obiektow-w-c-i-c</link>
<description>Czy jest poprawne nazywanie obiektów typu `int x = 3` zasobami automatycznymi, podczas gdy `char* buffer = new char[BUF_SIZE];` zasobami zarządzanymi zamiast obiektami przechowywanymi na stosie i stercie?</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598378/nazewnictwo-obiektow-w-c-i-c</guid>
<pubDate>Thu, 27 Mar 2025 19:07:12 +0000</pubDate>
</item>
<item>
<title>Odpowiednik zmiennych statycznych w makrach C/C++</title>
<link>https://forum.pasja-informatyki.pl/598353/odpowiednik-zmiennych-statycznych-w-makrach-c-c</link>
<description>

&lt;p&gt;Jak zrobić odpowiednik zmiennych statycznych bez lączności w zwykłych funkcjach C++ przy użyciu makr preprocesora? Przepraszam za ciągłe wstawianie pytań dzisiaj ale dopiero poznaję C++&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;

int test_successes = 0;
int test_failures = 0;

void test_assert(bool expr, std::string_view msg) {
    if (expr) {
        std::cout &amp;lt;&amp;lt; &quot;* test passed: &quot; &amp;lt;&amp;lt; msg &amp;lt;&amp;lt; std::endl;
        ++test_successes;
    } else {
        std::cout &amp;lt;&amp;lt; &quot;* test failed: &quot; &amp;lt;&amp;lt; msg &amp;lt;&amp;lt; std::endl;
        ++test_failures;
    }
}

void test_stats() {
    std::cout &amp;lt;&amp;lt; &quot;successes: &quot; &amp;lt;&amp;lt; test_successes &amp;lt;&amp;lt; std::endl;
    std::cout &amp;lt;&amp;lt; &quot;failures: &quot; &amp;lt;&amp;lt; test_failures &amp;lt;&amp;lt; std::endl;
}

int main() {
    test_assert(2 == 2, &quot;2 == 2&quot;);
    test_assert(2 &amp;lt; 0 == false, &quot;2 &amp;lt; 0 == false&quot;);
    test_assert(1 == 3, &quot;1 == 3&quot;);
    test_stats();
    return 0;
}&lt;/pre&gt;

</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598353/odpowiednik-zmiennych-statycznych-w-makrach-c-c</guid>
<pubDate>Tue, 25 Mar 2025 22:43:45 +0000</pubDate>
</item>
<item>
<title>Pokazywanie wyrażenia z kodu źródłowego w funkcjach inline</title>
<link>https://forum.pasja-informatyki.pl/598352/pokazywanie-wyrazenia-z-kodu-zrodlowego-w-funkcjach-inline</link>
<description>

&lt;p&gt;W jaki sposób mogę poniższe makra zamienić na funkcje inline, tak żeby pokazywały one wyrażenie podstawione za argument expr w kodzie źródłowym oprócz samego wyniku testu? W makrach jest to wykonalne ale wolę używać funkcji inline zamiast polegać na preprocesorze&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;cassert&amp;gt;
#include &amp;lt;iostream&amp;gt;

#define CHECKPOINT(msg) (std::cerr &amp;lt;&amp;lt; (msg) &amp;lt;&amp;lt; std::endl)
#define ASSERT(expr) \
    assert((expr)); \
    CHECKPOINT(&quot;* test passed&quot;);
#define ASSERTM(msg, expr) \
    assert((void(msg), (expr))); \
    CHECKPOINT(&quot;* test passed&quot;);
#define ASSERT_FALSE(expr) \
    assert((expr) == false); \
    CHECKPOINT(&quot;* test passed&quot;);
#define ASSERTM_FALSE(msg, expr) \
    assert((void(msg), (expr) == false)); \
    CHECKPOINT(&quot;* test passed&quot;);
#define TEST_CASE(msg) \
    (std::cout &amp;lt;&amp;lt; &quot;TEST CASE: &quot; &amp;lt;&amp;lt; (msg) &amp;lt;&amp;lt; std::endl)
&lt;/pre&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598352/pokazywanie-wyrazenia-z-kodu-zrodlowego-w-funkcjach-inline</guid>
<pubDate>Tue, 25 Mar 2025 22:41:40 +0000</pubDate>
</item>
<item>
<title>Używanie w makrach preprocesora średników</title>
<link>https://forum.pasja-informatyki.pl/598350/uzywanie-w-makrach-preprocesora-srednikow</link>
<description>

&lt;p&gt;Mam takie makro&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#define CHECKPOINT(msg) (std::cerr &amp;lt;&amp;lt; (msg) &amp;lt;&amp;lt; std::endl)&lt;/pre&gt;



&lt;p&gt;Lepiej w definicjach makr dodawać średniki i wywoływać je np CHECKPOINT(&quot;test passed&quot;) czy nie robić średnika na końcu wyrażenia z std::cerr i w kodzie robić CHECKPOINT(&quot;test passed&quot;);?&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598350/uzywanie-w-makrach-preprocesora-srednikow</guid>
<pubDate>Tue, 25 Mar 2025 22:38:12 +0000</pubDate>
</item>
<item>
<title>Używanie jednocześnie wejścia/wyjścia z stdio.h i iostream</title>
<link>https://forum.pasja-informatyki.pl/598348/uzywanie-jednoczesnie-wejscia-wyjscia-z-stdio-h-i-iostream</link>
<description>Czy można używać na przemian puts, fprintf, scanf i std::cout, std::cerr, std::cin w programie C++ bez ryzykowania pojawienia się nieoczekiwanych błędów w trakcie działania programu?</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598348/uzywanie-jednoczesnie-wejscia-wyjscia-z-stdio-h-i-iostream</guid>
<pubDate>Tue, 25 Mar 2025 22:34:26 +0000</pubDate>
</item>
<item>
<title>Generowanie kodu C i C++ w zależności od użytego kompilatora</title>
<link>https://forum.pasja-informatyki.pl/598347/generowanie-kodu-c-i-c-w-zaleznosci-od-uzytego-kompilatora</link>
<description>Siemka&lt;br /&gt;
&lt;br /&gt;
W jaki sposób mogę zrobić tak, by dla kodu kompilowanego gcc były używane inne funkcje itd. niż dla kodu kompilowanego g++?&lt;br /&gt;
&lt;br /&gt;
Dziękuję i pozdrawiam</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598347/generowanie-kodu-c-i-c-w-zaleznosci-od-uzytego-kompilatora</guid>
<pubDate>Tue, 25 Mar 2025 22:20:59 +0000</pubDate>
</item>
<item>
<title>Pętle typu while(true) w programowaniu</title>
<link>https://forum.pasja-informatyki.pl/598218/petle-typu-while-true-w-programowaniu</link>
<description>Czy używanie nieskończonych pętli while (true), for (;;) to zła praktyka programistyczna? Pytam bo zastanawiam się nad przepisaniem kodu C++ w taki sposób by uniknąć niepotrzebnych deklaracji zmiennych i zrobić po prostu returna w odpowiednim ifie.</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598218/petle-typu-while-true-w-programowaniu</guid>
<pubDate>Sat, 08 Mar 2025 16:42:48 +0000</pubDate>
</item>
<item>
<title>Program wpada w nieskończoną pętlę po naciśnięciu Ctrl+D</title>
<link>https://forum.pasja-informatyki.pl/598210/program-wpada-w-nieskonczona-petle-po-nacisnieciu-ctrl-d</link>
<description>Gdy wciskam Ctrl+D program wpada w nieskończoną pętlę. Nie poskutowało std::cin.clear() i std::cin.ignore(std::numeric_limits&amp;lt;std::streamsize&amp;gt;::max(). Ma ktoś pomysł jak wyczyścić flagę eof w cin tak, aby po wciśnięciu Ctrl+D dalej był możliwy odczyt danych z konsoli?</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598210/program-wpada-w-nieskonczona-petle-po-nacisnieciu-ctrl-d</guid>
<pubDate>Fri, 07 Mar 2025 21:00:50 +0000</pubDate>
</item>
<item>
<title>unsigned int czy std::size_t?</title>
<link>https://forum.pasja-informatyki.pl/598206/unsigned-int-czy-std-size_t</link>
<description>Kiedy lepiej używać typu std::size_t a kiedy unsigned int? Tworzę klasę linked_list, a konkretnie metody insert i remove_at i mnie zastanawia czy lepiej w nich użyć size_t czy tego drugiego typu i dlaczego.</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598206/unsigned-int-czy-std-size_t</guid>
<pubDate>Fri, 07 Mar 2025 15:36:16 +0000</pubDate>
</item>
<item>
<title>Interfejs klasy menu w C++</title>
<link>https://forum.pasja-informatyki.pl/598111/interfejs-klasy-menu-w-c</link>
<description>

&lt;p&gt;Robię klasę menu w C++ (kod poniżej). Jakie rozwiązanie jest lepsze,&amp;nbsp;oczekiwanie&amp;nbsp;od użytkownika pisanej przeze mnie biblioteki podania na starcie oczekiwanego interfejsu (np. używając list inicjalizacyjnych) w konstruktorze klasy menu czy dodanie do klasy menu metod add_item, remove_item?&lt;/p&gt;



&lt;p&gt;Co sądzicie o stworzeniu&amp;nbsp;osobnej klasy menu_item_list służącej do budowania interfejsu z metodami odpowiednio push_back, pop_back i używaniu jej w klasie menu do odwoływania się do elementów menu? Czy jak tworzę klasy będące kontenerami np. menu_item_list czy checkbox_group&amp;nbsp;to dobrze jest tworzone w nich metody nazywać jak w klasach z STL push_back, pop_back, push_front, pop_front itd.?&lt;/p&gt;



&lt;p&gt;Jakbym tworzył klasę menu_item_list to chętnie dodałbym metody typu add_submenu. Jak już tworzyć klasę menu_item_list to lepiej nazwać jej metody push_back, pop_back itd. czy lepsze będą nazwy add_item, remove_item, add_submenu?&lt;/p&gt;



&lt;p&gt;Mój kod&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
~/programy_cpp/linked_list ❯ cat main.cpp                                                                                                             16:32:57
#include &amp;lt;iostream&amp;gt;
/*#include &amp;lt;string&amp;gt;*/
/*#include &quot;linked_list.h&quot;*/
#include &quot;menu.h&quot;

void display_sth() {
    std::cout &amp;lt;&amp;lt; &quot;test\n&quot;;
}

int main() {
    menu_items main_menu_items;
    main_menu_items.push_back(menu_item{&quot;test&quot;, menu_item::noop});
    main_menu_items.push_back(menu_item{&quot;display_sth&quot;, display_sth});
    menu submenu{&quot;Submenu&quot;, {{&quot;test submenu&quot;, menu_item::noop}}};
    main_menu_items.push_back(menu_item{&quot;Submenu&quot;, invoke_menu_loop(submenu)});
    menu main_menu{&quot;Main menu&quot;, main_menu_items};
    main_menu.loop();
    return 0;
}
~/programy_cpp/linked_list ❯ cat menu.h                                                                                                               16:39:44
#ifndef MENU_H
#define MENU_H

#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;functional&amp;gt;

using menu_item_func = std::function&amp;lt;void()&amp;gt;;

void print_title(const std::string&amp;amp; title);

struct menu_item {
    menu_item(const std::string&amp;amp; title_val) : title{title_val}, action{noop} {}
    menu_item(const std::string&amp;amp; title_val, menu_item_func action_val)
        : title{title_val}, action{action_val} {}
    menu_item(const menu_item&amp;amp; item) : title{item.title}, action{item.action} {}

    friend std::ostream&amp;amp; operator&amp;lt;&amp;lt;(std::ostream&amp;amp; lhs, const menu_item&amp;amp; rhs);

    static void noop() { std::cout &amp;lt;&amp;lt; &quot;No action defined!\n&quot;; }

    std::string title{};
    menu_item_func action{};
};

using menu_items = std::vector&amp;lt;menu_item&amp;gt;;

class menu {
public:
    menu(const std::string&amp;amp; title_val);
    menu(const std::string&amp;amp; title_val, const std::vector&amp;lt;menu_item&amp;gt;&amp;amp; items_val);
    menu(const menu&amp;amp; menu_val);

    void loop();

private:
    void print_choices() const;
    char read_choice() const;

    static int nesting_level;
    bool active{false};
    std::string title{};
    std::vector&amp;lt;menu_item&amp;gt; items{};
};

std::function&amp;lt;void()&amp;gt; invoke_menu_loop(menu&amp;amp; the_menu);

#endif // MENU_H
~/programy_cpp/linked_list ❯ cat menu.cpp                                                                                                             16:39:48
#include &quot;menu.h&quot;
#include &amp;lt;limits&amp;gt;

int menu::nesting_level = 0;

void print_title(const std::string&amp;amp; title) {
    std::size_t title_len = title.size();
    std::size_t width = title_len + 4;
    for (int i = 0; i &amp;lt; width; ++i) {
        std::cout &amp;lt;&amp;lt; &quot;*&quot;;
    }
    std::cout &amp;lt;&amp;lt; &quot;\n* &quot; &amp;lt;&amp;lt; title &amp;lt;&amp;lt; &quot; *\n&quot;;
    for (int i = 0; i &amp;lt; width; ++i) {
        std::cout &amp;lt;&amp;lt; &quot;*&quot;;
    }
    std::cout &amp;lt;&amp;lt; std::endl;
}

std::ostream&amp;amp; operator&amp;lt;&amp;lt;(std::ostream&amp;amp; lhs, const menu_item&amp;amp; rhs) {
    return lhs &amp;lt;&amp;lt; rhs.title;
}

menu::menu(const std::string&amp;amp; title_val) : title{title_val} {
}

menu::menu(const std::string&amp;amp; title_val, const std::vector&amp;lt;menu_item&amp;gt;&amp;amp; items_val)
    : title{title_val}, items{items_val} {
}

menu::menu(const menu&amp;amp; menu_val) {
    for (const menu_item&amp;amp; item : menu_val.items) {
        items.push_back(item);
    }
}

void menu::print_choices() const {
    for (int i = 0; i &amp;lt; items.size(); ++i) {
        std::cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &quot;) &quot; &amp;lt;&amp;lt; items[i] &amp;lt;&amp;lt; std::endl;
    }
    std::cout &amp;lt;&amp;lt; &quot;q) &quot;;
    if (nesting_level &amp;gt; 1)
        std::cout &amp;lt;&amp;lt; &quot;Back&quot;;
    else
        std::cout &amp;lt;&amp;lt; &quot;Quit&quot;;
    std::cout &amp;lt;&amp;lt; std::endl;
}

char menu::read_choice() const {
    char choice;
    bool valid{false};

    std::cout &amp;lt;&amp;lt; &quot;What do you want to do?\n&quot;;
    do {
        print_choices();
        std::cout &amp;lt;&amp;lt; &quot;Your choice: &quot;;
        std::cin &amp;gt;&amp;gt; choice;
        if ((choice - '0') &amp;lt; 0 || ((choice - '0') &amp;gt;= items.size()) &amp;amp;&amp;amp; (choice != 'q')) {
            std::cout &amp;lt;&amp;lt; &quot;Invalid choice!\n&quot;;
        } else {
            valid = true;
        }
    } while (!valid);
    return choice;
}

void menu::loop() {
    active = true;
    ++nesting_level;
    while (active) {
        print_title(title);
        char choice = read_choice();
        if (choice == 'q') {
            --nesting_level;
            active = false;
        } else {
            // call function bound to menu item
            items[choice - '0'].action();
            // discard input and wait until user press the enter key
            std::cout &amp;lt;&amp;lt; &quot;Press enter to continue...\n&quot;;
            std::cin.clear();
            std::cin.ignore(std::numeric_limits&amp;lt;std::streamsize&amp;gt;::max(), '\n');
            std::cin.get();
        }
    }
}

std::function&amp;lt;void()&amp;gt; invoke_menu_loop(menu&amp;amp; the_menu) {
    return [&amp;amp;]() { the_menu.loop(); };
}
&lt;/pre&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598111/interfejs-klasy-menu-w-c</guid>
<pubDate>Sun, 23 Feb 2025 15:40:41 +0000</pubDate>
</item>
<item>
<title>Menu w C++ - błąd wykonania programu</title>
<link>https://forum.pasja-informatyki.pl/598106/menu-w-c-blad-wykonania-programu</link>
<description>

&lt;p&gt;Jakiś pomysł skąd błędy w trakcie wykonania programu? Wyjście z terminala poniżej:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
~/programy_cpp/linked_list ❯ cat menu.h                                                                                                         ✘ IOT 13:06:46
#ifndef MENU_H
#define MENU_H

#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;functional&amp;gt;

using menu_item_func = std::function&amp;lt;void()&amp;gt;;

void print_title(const std::string&amp;amp; title);

struct menu_item {
    menu_item(const std::string&amp;amp; title_val) : title{title_val} {}
    menu_item(const std::string&amp;amp; title_val, menu_item_func action_val)
        : title{title_val}, action{action_val} {}
    menu_item(const menu_item&amp;amp; item) : title{item.title}, action{item.action} {}
    menu_item&amp;amp; operator=(const menu_item&amp;amp; rhs);

    friend std::ostream&amp;amp; operator&amp;lt;&amp;lt;(std::ostream&amp;amp; lhs, const menu_item&amp;amp; rhs);

    std::string title{};
    menu_item_func action{};
};

using menu_items = std::vector&amp;lt;menu_item&amp;gt;;

class menu {
public:
    menu(const std::string&amp;amp; title_val);
    menu(const std::string&amp;amp; title_val, const std::vector&amp;lt;menu_item&amp;gt;&amp;amp; items_val);
    menu(const menu&amp;amp; menu_val);

    void loop();

    static void noop() { std::cout &amp;lt;&amp;lt; &quot;No action defined!\n&quot;; }

private:
    void print_choices() const;
    char read_choice() const;

    static int nesting_level;
    bool active{false};
    std::string title{};
    std::vector&amp;lt;menu_item&amp;gt; items{};
};

#endif // MENU_H
~/programy_cpp/linked_list ❯ cat menu.cpp                                                                                                             13:07:39
#include &quot;menu.h&quot;

int menu::nesting_level = 0;

void print_title(const std::string&amp;amp; title) {
    std::size_t title_len = title.size();
    std::size_t width = title_len + 4;
    for (int i = 0; i &amp;lt; width; ++i) {
        std::cout &amp;lt;&amp;lt; &quot;*&quot;;
    }
    std::cout &amp;lt;&amp;lt; &quot;\n* &quot; &amp;lt;&amp;lt; title &amp;lt;&amp;lt; &quot; *\n&quot;;
    for (int i = 0; i &amp;lt; width; ++i) {
        std::cout &amp;lt;&amp;lt; &quot;*&quot;;
    }
    std::cout &amp;lt;&amp;lt; std::endl;
}

menu_item&amp;amp; menu_item::operator=(const menu_item&amp;amp; rhs) {
    title = rhs.title;
    action = rhs.action;
    return *this;
}

std::ostream&amp;amp; operator&amp;lt;&amp;lt;(std::ostream&amp;amp; lhs, const menu_item&amp;amp; rhs) {
    return lhs &amp;lt;&amp;lt; rhs.title;
}

menu::menu(const std::string&amp;amp; title_val) : title{title_val} {
}

menu::menu(const std::string&amp;amp; title_val, const std::vector&amp;lt;menu_item&amp;gt;&amp;amp; items_val)
    : title{title_val}, items{items_val} {
}

menu::menu(const menu&amp;amp; menu_val) {
    for (const menu_item&amp;amp; item : menu_val.items) {
        items.push_back(item);
    }
}

void menu::print_choices() const {
    for (int i = 0; i &amp;lt; items.size(); ++i) {
        std::cout &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &quot;) &quot; &amp;lt;&amp;lt; items[i] &amp;lt;&amp;lt; std::endl;
    }
    std::cout &amp;lt;&amp;lt; &quot;q) &quot;;
    if (nesting_level &amp;gt; 1)
        std::cout &amp;lt;&amp;lt; &quot;Back&quot;;
    else
        std::cout &amp;lt;&amp;lt; &quot;Quit&quot;;
    std::cout &amp;lt;&amp;lt; std::endl;
}

char menu::read_choice() const {
    char choice;
    bool valid{false};

    std::cout &amp;lt;&amp;lt; &quot;What do you want to do?\n&quot;;
    do {
        print_choices();
        std::cout &amp;lt;&amp;lt; &quot;Your choice: &quot;;
        std::cin &amp;gt;&amp;gt; choice;
        if ((choice - '0') &amp;lt; 0 || ((choice - '0') &amp;gt;= items.size()) &amp;amp;&amp;amp; (choice != 'q')) {
            std::cout &amp;lt;&amp;lt; &quot;Invalid choice!\n&quot;;
        } else {
            valid = true;
        }
    } while (!valid);
    return choice;
}

void menu::loop() {
    active = true;
    ++nesting_level;
    while (active) {
        print_title(title);
        char choice = read_choice();
        if (choice == 'q') {
            --nesting_level;
            active = false;
        } else {
            items[choice].action();
        }
    }
}
~/programy_cpp/linked_list ❯ cat main.cpp                                                                                                             13:07:41
#include &amp;lt;iostream&amp;gt;
/*#include &amp;lt;string&amp;gt;*/
/*#include &quot;linked_list.h&quot;*/
#include &quot;menu.h&quot;

void display_sth() {
    std::cout &amp;lt;&amp;lt; &quot;test\n&quot;;
}

int main() {
    menu_items main_menu_items;
    main_menu_items.emplace_back(&quot;test&quot;, menu::noop);
    main_menu_items.emplace_back(&quot;display_sth&quot;, display_sth);
    menu main_menu{&quot;Main menu&quot;, main_menu_items};
    main_menu.loop();
    return 0;
}
~/programy_cpp/linked_list ❯ ./main                                                                                                                   13:07:47
*************
* Main menu *
*************
What do you want to do?
0) test
1) display_sth
q) Quit
Your choice: 1
/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/stl_vector.h:1130: std::vector&amp;lt;_Tp, _Alloc&amp;gt;::reference std::vector&amp;lt;_Tp, _Alloc&amp;gt;::operator[](size_type) [with _Tp = menu_item; _Alloc = std::allocator&amp;lt;menu_item&amp;gt;; reference = menu_item&amp;amp;; size_type = long unsigned int]: Assertion '__n &amp;lt; this-&amp;gt;size()' failed.
zsh: IOT instruction (core dumped)  ./main
~/programy_cpp/linked_list ❯ ./main                                                                                                             ✘ IOT 13:07:51
*************
* Main menu *
*************
What do you want to do?
0) test
1) display_sth
q) Quit
Your choice: 0
/usr/lib/gcc/x86_64-pc-linux-gnu/14/include/g++-v14/bits/stl_vector.h:1130: std::vector&amp;lt;_Tp, _Alloc&amp;gt;::reference std::vector&amp;lt;_Tp, _Alloc&amp;gt;::operator[](size_type) [with _Tp = menu_item; _Alloc = std::allocator&amp;lt;menu_item&amp;gt;; reference = menu_item&amp;amp;; size_type = long unsigned int]: Assertion '__n &amp;lt; this-&amp;gt;size()' failed.
zsh: IOT instruction (core dumped)  ./main
~/programy_cpp/linked_list ❯ ./main                                                                                                             ✘ IOT 13:07:55
*************
* Main menu *
*************
What do you want to do?
0) test
1) display_sth
q) Quit
Your choice: q&lt;/pre&gt;

</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598106/menu-w-c-blad-wykonania-programu</guid>
<pubDate>Sun, 23 Feb 2025 13:49:02 +0000</pubDate>
</item>
<item>
<title>Konwersja char do int na systemach, które nie używają ASCII</title>
<link>https://forum.pasja-informatyki.pl/598103/konwersja-char-do-int-na-systemach-ktore-nie-uzywaja-ascii</link>
<description>Wczytuję różne znaki od użytkownika za pomocą char ch; std::cin &amp;gt;&amp;gt; ch; w pętli (lub odpowiednika z getchar w C)&lt;br /&gt;
&lt;br /&gt;
Jak zapewnić przenośną konwersję danych w ch na typ int, jeśli użytkownik wpisze znak będący liczbą, która uwzględniałaby systemy nie używające ASCII, odpowiednio w C i w C++?&lt;br /&gt;
&lt;br /&gt;
Czy jest sens przejmować się tego typu konwersjami przy pisaniu programów, które mają coś robić więcej na poważnie niż być prostymi programikami pisanymi w ramach hobby?</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598103/konwersja-char-do-int-na-systemach-ktore-nie-uzywaja-ascii</guid>
<pubDate>Sun, 23 Feb 2025 11:12:03 +0000</pubDate>
</item>
<item>
<title>Podpięcie AI do własnego Systemu Operacyjnego</title>
<link>https://forum.pasja-informatyki.pl/598020/podpiecie-ai-do-wlasnego-systemu-operacyjnego</link>
<description>Witam, jako iż jestem początkującym programistą C++ z dużymi ambicjami, mam pytanie, czy da się, i jak podpiąć AI do własnego Systemu Operacyjnego?</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/598020/podpiecie-ai-do-wlasnego-systemu-operacyjnego</guid>
<pubDate>Sun, 09 Feb 2025 00:15:15 +0000</pubDate>
</item>
<item>
<title>Podpięcie programu C++ do komputera</title>
<link>https://forum.pasja-informatyki.pl/597984/podpiecie-programu-c-do-komputera</link>
<description>Dzień Dobry, mam pytanie, jak mogę podpiąć program napisany w języku C++ do komputera w taki sposób, żeby po uruchomieniu komputera pojawiła się konsola cmd, z pytaniem o login i hasło?&lt;br /&gt;
&lt;br /&gt;
PS: Program mam zrobiony, tylko nie wiem jak i czy da się coś takiego zrobić</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597984/podpiecie-programu-c-do-komputera</guid>
<pubDate>Mon, 03 Feb 2025 23:31:18 +0000</pubDate>
</item>
<item>
<title>Moja pierwsza implementacja listy jednokierunkowej</title>
<link>https://forum.pasja-informatyki.pl/597815/moja-pierwsza-implementacja-listy-jednokierunkowej</link>
<description>

&lt;p&gt;Witam, niedawno zacząłem się uczyć obiektowego C++ na własną rękę i jednym z projektów, które chciałem stworzyć to moja własna implementacja listy jednokierunkowej (&lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://ideone.com/npDroi&quot;&gt;link&lt;/a&gt;&lt;/strong&gt;). Wydaje mi się, że dobry przykład na początek, &lt;strong&gt;więc chciałbym się zapytać, czy jest ona poprawna&lt;/strong&gt;, czyli taka, która nie doprowadza do tzw. wycieku pamięci. Na moje oko powinno wszystko grać, ale zawsze lepiej dmuchać na zimne. Po drugie tak sobie myślałem, &lt;strong&gt;czy nie dałoby rady wszystkich funkcji zamienić w metody klasy Node&lt;/strong&gt;, tak aby nie wykonywać funkcji w taki sposób:&lt;/p&gt;



&lt;blockquote&gt;


&lt;p&gt;addToList(100);&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;tylko mniej więcej w taki, który jest troszkę nawet bardziej czytelniejszy:&lt;/p&gt;



&lt;blockquote&gt;


&lt;p&gt;myList.addToList(100);&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;, czyli w skrócie wywoływać funkcje obiektowo a nie proceduralnie. Nawet jeżeli to możliwe, to nie mam pojęcia jak tego dokonać, gdyż moja lista to przecież tylko wskaźnik na pierwszy element, a nie obiekt, a&amp;nbsp; struktura Node odpowiada za obiekty a nie za wskaźniki. Tak czy siak, dzięki z góry za przesyłane komentarze i odpowiedzi. Pozdrawiam.&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597815/moja-pierwsza-implementacja-listy-jednokierunkowej</guid>
<pubDate>Fri, 17 Jan 2025 11:25:05 +0000</pubDate>
</item>
<item>
<title>Uruchomienie programu w sfml</title>
<link>https://forum.pasja-informatyki.pl/597767/uruchomienie-programu-w-sfml</link>
<description>

&lt;p&gt;Napisałem grę xonix w c++ z użyciem biblioteki sfml, ale nie potrafię jej uruchomić. Nie wyskakują żądne błędy i nie wiem co jest nie tak, ponieważ mechanika nie działa tak jak powinna. W programie są 3 klasy kolejno po sobie dziedziczące Enemy Player i Game. Klasa Game posiada metodę run, która z założenia miała po wywołaniu jej w funkcji main, uruchomić cały program.&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Game.cpp&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include&amp;lt;SFML/System/Clock.hpp&amp;gt;
#include&amp;lt;SFML/System/Time.hpp&amp;gt;
#include&quot;Game.h&quot;
#include &quot;Player.h&quot;

Game::Game() {
    game_window.create(sf::VideoMode(K * tile_size, W * tile_size), &quot;XONIX&quot;); // tworzenie okna
	game_window.setFramerateLimit(60);
	resetGame();
    set_frame();
    Render();
	Run();
}



void Game::resetGame() {
  
    gPlayer.user_x = 0;
    gPlayer.user_y = 0;
    gPlayer.user_dx = 0;
    gPlayer.user_dy = 0;
    gameplay = true;

    // Reset grid
    set_frame();
    
    occupiedCount = -90;
    calculateOccupiedPercentage();

    // Reset enemies
    for (int i = 0; i &amp;lt; numEnemies; i++) {
        new enemy(); // Reinitialize enemies
    }
}



float Game::calculateOccupiedPercentage() {
    occupiedCount = -90.0;
    int totalCount = ((W - 2) * (K - 2)) - 27; // Pomijamy obramowanie i miejsce na procenty

    for (int i = 0; i &amp;lt; W - 1; i++) {
        for (int j = 0; j &amp;lt; K - 1; j++) {
            if (grid[i][j] == 1) occupiedCount++;
        }
    }

    float occupiedPercentage = (occupiedCount / static_cast&amp;lt;float&amp;gt;(totalCount)) * 100.0f;

    if (static_cast&amp;lt;int&amp;gt;(occupiedPercentage) &amp;gt; 80) {
       // game_window.draw(sLevel_up);
        resetGame();
        
    }
    return occupiedPercentage;
}


void Game::set_frame() {
    for (int i = 0; i &amp;lt; W; i++) {
        for (int j = 0; j &amp;lt; K; j++) {
            if (i == 0 || j == 0 || i == W - 1 || j == K - 1) {
                grid[i][j] = 1; // ustawianie wartości 1 w tablicy dla obramowania
			}
            else {
                grid[i][j] = 0; // ustawianie wartości 0 w tablicy dla pustych pól
            }
        }
    }

    for (int i = 0; i &amp;lt; 4; i++) {
        for (int j = 0; j &amp;lt; 10; j++) {
            grid[i][j] = 1; // ustawianie wartości 1 w tablicy dla percentage bar
        }
    }
}



void Game::Render() {
    Texture texture1, texture2, texture3, texture4,texture5; // loading textures
    texture1.loadFromFile(&quot;images/tiles.png&quot;);
    texture2.loadFromFile(&quot;images/gameover.png&quot;);
    texture3.loadFromFile(&quot;images/enemy.png&quot;);
    texture4.loadFromFile(&quot;images/level_up.png&quot;);

    Sprite sTile(texture1), sGameover(texture2), sEnemy(texture3), sLevel_up(texture4), sPlayer(texture5);
    sLevel_up.setOrigin(100, 100);
    sGameover.setPosition(100, 100);
    sEnemy.setOrigin(20, 20);

    Font font;
    if (!font.loadFromFile(&quot;font/agency_fb.ttf&quot;)) {
        std::cerr &amp;lt;&amp;lt; &quot;Nie udało się załadować czcionki!&quot; &amp;lt;&amp;lt; std::endl;
    }

    Text percentageText;
    percentageText.setFont(font);
    percentageText.setCharacterSize(30);
    percentageText.setFillColor(Color::White);
    percentageText.setStyle(sf::Text::Bold);
    percentageText.setPosition(10, 10);

    float occupiedPercentage = calculateOccupiedPercentage();
    percentageText.setString(&quot;Occupied: &quot; + std::to_string(static_cast&amp;lt;int&amp;gt;(occupiedPercentage)) + &quot;%&quot;);
    game_window.draw(percentageText);

    
    ////////////////////////////////////////////////////////////////////////
    
    set_frame();

    for (int i = 0; i &amp;lt; W; i++) { // rysuje siatke, przeciwnikow i postac gracza
        for (int j = 0; j &amp;lt; K; j++) {
            if (grid[i][j] == 0) continue; // puste pole
            if (grid[i][j] == 1) sTile.setTextureRect(IntRect(0, 0, tile_size, tile_size)); // sciana
            if (grid[i][j] == 2) sTile.setTextureRect(IntRect(54, 0, tile_size, tile_size)); // slad gracza
            sTile.setPosition(static_cast&amp;lt;float&amp;gt;(j * tile_size), static_cast&amp;lt;float&amp;gt;(i * tile_size));
            game_window.draw(sTile);
        }
    }

    sTile.setTextureRect(IntRect(36, 0, tile_size, tile_size));
    sTile.setPosition(user_x * tile_size, user_y * tile_size);
    game_window.draw(sTile);

    RectangleShape black_bar(sf::Vector2f(162, 54));
    black_bar.setFillColor(sf::Color::Black);
    black_bar.setPosition(0, 0);
    game_window.draw(black_bar);

    sEnemy.rotate(10);
    for (int i = 0; i &amp;lt; numEnemies; i++) {
        sEnemy.setPosition(static_cast&amp;lt;float&amp;gt;(tab[i].x), static_cast&amp;lt;float&amp;gt;(tab[i].y));
        game_window.draw(sEnemy);
    }

	game_window.draw(percentageText);


}




void Game::Run() {
    //game_window.create(sf::VideoMode(K * tile_size, W * tile_size), &quot;XONIX&quot;); // tworzenie okna
    //game_window.setFramerateLimit(60);

    while (game_window.isOpen()) {
        while (game_window.pollEvent(event)) {
            if (event.type == sf::Event::Closed) {
                game_window.close();
            }

            if (event.type == sf::Event::KeyPressed) {
                if (event.key.code == sf::Keyboard::Space) {
                    resetGame();
                }
            }
        }
        
        
        // Aktualizujemy stan gry
        gPlayer.clock.restart();
        gPlayer.Move();
        gPlayer.collisions();
        for (int i = 0; i &amp;lt; numEnemies; i++) {
                tab[i].move();
            }
    
        // Sprawdzanie kolizji gracza z przeciwnikami
        for (int i = 0; i &amp;lt; numEnemies; i++) {
            if (grid[tab[i].y / tile_size][tab[i].x / tile_size] == 2) {
                gameplay = false;
            }
        }

        if (!gameplay) {
            game_window.clear();
           // game_window.draw(sGameover);
            game_window.display();
            //sf::sleep(sf::seconds(2)); // Krótka pauza po zakończeniu gry
            resetGame();
            continue;
        }

        // Renderowanie gry
        game_window.clear();
        Render();
        game_window.display();
    }
}

&lt;/pre&gt;



&lt;p&gt;ale po jej wywołaniu, obiekt player nawet się nie pokazuje a obiekty enemy wylatują poza okno. Poniżej załączam resztę kodu&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Game.h&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#pragma once
#include &amp;lt;SFML/Graphics.hpp&amp;gt;
#include &amp;lt;SFML/Window.hpp&amp;gt;
#include&amp;lt;SFML/System/Time.hpp&amp;gt;
#include &amp;lt;time.h&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include&quot;Player.h&quot;


extern enemy tab[5];
using namespace sf;


class Game: public Player
{
public:
	
	//Sprite sTile, sGameover, sEnemy, sLevel_up;
	float occupiedCount=0;
	sf::RenderWindow game_window;
	sf::Event event;
	Game();
	void resetGame();
	float calculateOccupiedPercentage();
	void set_frame();
	//void Draw();
	void Render();
	void Run();	
	Player gPlayer;
	enemy gEnemy;

};




&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Player.h&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#pragma once
#include &amp;lt;time.h&amp;gt;
#include&amp;lt;Windows.h&amp;gt;
#include&amp;lt;sfml/Window.hpp&amp;gt;
#include&quot;enemy.h&quot;

extern int grid[25][40];
extern int tile_size;
class Game;
extern enemy tab[5];


class Player: public enemy
{
public:
	int user_dx, user_dy, user_x, user_y;
	sf::Clock clock;
	float timer = 0;
	double delay = 0.07;
	Player();
	void Move();
	void collisions();
	int send_components();
	static const int W = 25;
	static const int K = 40;

};

&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Player.cpp&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &quot;Player.h&quot;
#include&amp;lt;SFML/Window.hpp&amp;gt;
#include&amp;lt;windows.h&amp;gt;

using namespace sf;


Player::Player()
{
    user_x = 0, user_y = 0, user_dx = 0, user_dy = 0;
    srand(static_cast&amp;lt;int&amp;gt;(time(NULL)));
    float time = clock.getElapsedTime().asSeconds();
    clock.restart();
    timer += time;

}


void Player::Move()
{
    if (Keyboard::isKeyPressed(Keyboard::Left)) { user_dx = -1; user_dy = 0; } // ruchy gracza
    if (Keyboard::isKeyPressed(Keyboard::Right)) { user_dx = 1; user_dy = 0; }
    if (Keyboard::isKeyPressed(Keyboard::Up)) { user_dx = 0; user_dy = -1; }
    if (Keyboard::isKeyPressed(Keyboard::Down)) { user_dx = 0; user_dy = 1; }


    if (timer &amp;gt; delay) // przesuwanie gracza o jedno pole co jakis czas
    {
        user_x += user_dx;
        user_y += user_dy;

        if (user_x &amp;lt; 0) user_x = 0;
        if (user_y &amp;lt; 0) user_y = 0;
        if (user_x &amp;gt; K - 1) user_x = K - 1;
        if (user_y &amp;gt; W - 1) user_y = W - 1;

        if (grid[user_y][user_x] == 2) gameplay = false; // kolizja w wlasnym sladem
        if (grid[user_y][user_x] == 0) grid[user_y][user_x] = 2; // tworzenie sladu
        timer = 0;
    }
}

void Player::collisions() {

    if (grid[user_y][user_x] == 1) // sprawdza czy gracz zamknął obszar i aktualizuje siatke
    {
        user_dx = user_dy = 0;

        for (int i = 0; i &amp;lt; numEnemies; i++)
            tab[i].occupy(tab[i].y / tile_size, tab[i].x / tile_size);

        for (int i = 0; i &amp;lt; W; i++)
            for (int j = 0; j &amp;lt; K; j++)
                if (grid[i][j] == -1) grid[i][j] = 0; // obszar zamnkniety
                else grid[i][j] = 1; // sciany
    }

}


int Player::send_components()
{
    return user_x, user_y, user_dx, user_dy;
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;enemy.h&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#pragma once
#include&amp;lt;time.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;



static int grid[25][40] = { 0 };
static int tile_size=18;


class enemy{
public:
	static bool gameplay;
	int x, y, dx, dy;
	int numEnemies = 5; // number of enemies
	enemy();
	void move();
	void occupy(int y, int x);
	~enemy() = default;
};

static enemy tab[5];&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;enemy.cpp&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &quot;enemy.h&quot;


bool enemy::gameplay=1;


enemy::enemy()
{
	x = 300;
	y = 300;
	dx = 3- rand() % 6;
	dy = 3-rand() % 6;
	void move();
}

void enemy::move()
{
	x += dx;
	if (grid[y / tile_size][x / tile_size] == 1) { dx = -dx; x += dx; }
	y += dy;
	if (grid[y / tile_size][x / tile_size] == 1) { dy = -dy; y += dy; }
}

//zajmowanie planszy
void enemy::occupy(int y, int x)
{
	if (grid[y][x] == 0) grid[y][x] = -1;
	if (grid[y - 1][x] == 0) occupy(y - 1, x);
	if (grid[y + 1][x] == 0) occupy(y + 1, x);
	if (grid[y][x - 1] == 0) occupy(y, x - 1);
	if (grid[y][x + 1] == 0) occupy(y, x + 1);
}
&lt;/pre&gt;



&lt;p&gt;Funkcja main to tylko zdefiniowanie obiektu game klasy Game i wywołanie dla niego metody Run().&lt;/p&gt;



&lt;p&gt;Byłbym bardzo wdzięczny, gdyby ktoś chociaż podpowiedział gdzie szukać błędów, bo siedzę nad tym już naprawdę długo a na nic nie wpadłem.
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597767/uruchomienie-programu-w-sfml</guid>
<pubDate>Wed, 15 Jan 2025 15:52:57 +0000</pubDate>
</item>
<item>
<title>Warcaby w języku c</title>
<link>https://forum.pasja-informatyki.pl/597717/warcaby-w-jezyku-c</link>
<description>

&lt;p&gt;Hej piszę gre warcaby w języku c, napisałem kilka funkcji, ale niestety coś nie działa, szukałem chwile i nie moge znaleźć błędu, główny problemem jest to że cały czas wyskakuje niepoprawny ruch, a wczęsniej jak pokazywało poprawny ruch to plansza się nie aktualizowała, z góry bardzo dziękuje za pomoc&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;math.h&amp;gt;
#include&amp;lt;time.h&amp;gt;
#include&amp;lt;string.h&amp;gt;



void stworzenieplanszy(char plansza[8][8])

{
    char planszapocz[8][8] =
    {
        {' ','o',' ','o',' ','o',' ','o'},
        {'o',' ','o',' ','o',' ','o',' '},
        {' ','o',' ','o',' ','o',' ','o'},
        {' ',' ',' ',' ',' ',' ',' ',' '},
        {' ',' ',' ',' ',' ',' ',' ',' '},
        {'x',' ','x',' ','x',' ','x',' '},
        {' ','x',' ','x',' ','x',' ','x'},
        {'x',' ','x',' ','x',' ','x',' '}
    };
        //przekazywanie wartosci
    for (int i = 0; i &amp;lt; 8; i++) {
        for (int j = 0; j &amp;lt; 8; j++) {
            plansza[i][j] = planszapocz[i][j];
        }
    }
}

void wyswietlenieplanszy(char plansza[8][8])
{
    printf(&quot;  a b c d e f g h\n&quot;); // oznaczenie kolumny
    for (int i = 0; i &amp;lt; 8; i++) {
        printf(&quot;%d &quot;, i + 1);  // oznaczenie wiersze
        for (int j = 0; j &amp;lt; 8; j++) {
            printf(&quot;%c &quot;, plansza[i][j]);
        }
        printf(&quot;\n&quot;);
    }
}



void poczatek()
{
    printf(&quot;tekst 1\n&quot;);
    printf(&quot;tekst 2\n&quot;);
    printf(&quot;tekst 3\n&quot;);
    printf(&quot;\n\n\n&quot;);


}


int czymapionki(char gracz, char graczdamka, char plansza[8][8])
{
        for (int i = 0; i &amp;lt; 8; i++)
            {
            for (int j = 0; j &amp;lt; 8; j++)
            {
                if (plansza[i][j] == gracz || plansza[i][j] == graczdamka)
                    {
                    return 1;  // sa jeszcze pionki
                    }
            }
        }
        return 2;  // nie ma pionkow
    }



void zamianaliter(const char *coord, int *x, int *y)
{
    *x = coord[0] - 'a';  // Z literki 'a'-'h' na indeks 0-7
    *y = 8 - (coord[1] - '0');  // Z cyfry '1'-'8' na indeks 7-0
}




int czypoprawnyruch(char plansza[8][8], int poczx, int poczy, int konx, int kony, char gracz)
{
    //  czy ruch jest po przekatnej
    if (konx - poczx != 1 || kony - poczy != 1)
        {
        return 0; // Ruch nie jest po przekatnej o 1
        }

    //  czy docelowe pole jest puste
    if (plansza[konx][kony] != ' ')
        {
        return 0; //docelowe pole nie jest puste
        }

    // czy koñcowe pole nie jest zajete przez pionek gracza
    if (plansza[konx][kony] == gracz)
        {
        return 0; // Na koñcowym polu jest juz pionek gracza
        }

    if (konx &amp;gt;= poczx || kony != poczy + 1)
        {
        return 0; // Ruch nie jest w góre planszy lub nie jest po przekatnej
        }

    // Ruch jest poprawny
    return 1;
}




int czymoznazbic(char plansza[8][8], int poczx, int poczy, int konx, int kony, char gracz, char komputer)
{
    // Sprawdzamy, czy ruch jest o dwa pola po przekatnej
    if (abs(konx - poczx) != 2 || (kony - poczy) != 2)
    {
        return 0; // Ruch musi byc o dwa pola
    }

    // Sprawdzamy, czy pole koñcowe jest puste
    if (plansza[konx][kony] != ' ') {
        return 0; // Koñcowe pole nie jest puste
    }

    // Sprawdzamy, czy na polu poprednim znajduje sie pionek przeciwnika
    int srodx = (poczx + konx) / 2;
    int srody = (poczy + kony) / 2;

    if (plansza[srodx][srody] != komputer) {
        return 0; // Jezeli na srodku nie ma pionka przeciwnika, nie mozna wykonac bicia
    }

    // Bicie jest mozliwe
    return 1;
}



void wykonanieruchu(char plansza[8][8], int poczx, int poczy, int konx, int kony) {
    char temp = plansza[poczx][poczy]; // Zapamietujemy pionek, który wykonuje ruch
    plansza[poczx][poczy] = ' '; // Usuwamy pionek ze starej pozycji
    plansza[konx][kony] = temp; // Ustawiamy pionek na nowej pozycji
}


void wykonaniebicia(char plansza[8][8], int poczx, int poczy, int konx, int kony)
{
    char temp = plansza[poczx][poczy]; // Zapamietujemy pionek, który wykonuje ruch
    int srodx = (poczx + konx) / 2;
    int srody = (poczy + kony) / 2;

    plansza[poczx][poczy] = ' '; // Usuwamy pionek ze starej pozycji
    plansza[srodx][srody] = ' '; // Usuwamy zbitego pionka przeciwnika
    plansza[konx][kony] = temp; // Ustawiamy pionek na nowej pozycji
}








void ruchgracza(char plansza[8][8], char gracz, char komputer)
{
    char poczkord[3], konkord[3]; // Tablica na wspolrzedne w formacie np. &quot;a2&quot;
    int poczx, poczy, konx, kony;

    // Prosba o wprowadzenie wspolrzêdnych
    printf(&quot;WprowadŸ wspó³rzêdne pocz¹tkowe (np. a2): &quot;);
    scanf(&quot;%s&quot;, poczkord);
    printf(&quot;WprowadŸ wspó³rzêdne koñcowe (np. a4): &quot;);
    scanf(&quot;%s&quot;, konkord);

    // Zamiana wspólrzêdnych startowych i koncowych
    zamianaliter(poczkord, &amp;amp;poczx, &amp;amp;poczy);
    zamianaliter(konkord, &amp;amp;konx, &amp;amp;kony);

    if (czypoprawnyruch(plansza, poczx, poczy, konx, kony, gracz))
        {
        // Zwykly ruch
        wykonanieruchu(plansza, poczx, poczy, konx, kony);
        printf(&quot;Ruch wykonany.\n&quot;);
        }
    else if (czymoznazbic(plansza, poczx, poczy, konx, kony, gracz, komputer))
        {
        // Zbicie
        wykonaniebicia(plansza, poczx, poczy, konx, kony);
        printf(&quot;Zbicie wykonane.\n&quot;);
        }
    else
        {
        printf(&quot;Niepoprawny ruch!\n&quot;);
        }
}




























void ruchkomputera()
{

}








int main()

{

    poczatek();

    char plansza[8][8];
    stworzenieplanszy(plansza);

    wyswietlenieplanszy(plansza);

    while(1)
    {

        ruchgracza(plansza, 'x', 'o');
        wyswietlenieplanszy(plansza);







         if (czymapionki('o','O', plansza)==2)
            {
            printf(&quot;Gratulacje! Wygrales przeciwnik nie ma juz pionkow.\n&quot;);
            break;
            }
        if (czymapionki('x', 'X', plansza)==2)
            {
            printf(&quot;Niestety! Przegrales nie masz juz pionkow.\n&quot;);
            break;
            }

    }

    printf(&quot;Gra zakonczona&quot;);








    return 0;
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597717/warcaby-w-jezyku-c</guid>
<pubDate>Mon, 13 Jan 2025 16:48:25 +0000</pubDate>
</item>
<item>
<title>Po podłączeniu biblioteki SFML do mojego kodu pojawia się błąd kompilacji.</title>
<link>https://forum.pasja-informatyki.pl/597612/po-podlaczeniu-biblioteki-sfml-do-mojego-kodu-pojawia-sie-blad-kompilacji</link>
<description>Próbuję podłączyć bibliotekę SFML 3.0, aby działała w Visual Studio Code 2022. Obejrzałem kilka poradników na ten temat i próbowałem to zrobić kilka razy, ale za każdym razem, pomimo że robię wszystko jak na filmikach tutorialowych, pojawia się błąd: &amp;quot;Wystąpiły błędy kompilacji. Czy chcesz kontynuować i uruchomić ostatnią kompilację zakończoną powodzeniem?&amp;quot;. Na liście błędów wyświetla się 480 różnych błędów. Zauważyłem, że w poradnikach w katalogu 'bin' znajduje się plik o nazwie 'openal32.dll', a ja tego pliku nie mam i nie wiem, czy to może być problemem. Do testowania, czy biblioteka działa, użyłem kodu z oficjalnej strony SFML.</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597612/po-podlaczeniu-biblioteki-sfml-do-mojego-kodu-pojawia-sie-blad-kompilacji</guid>
<pubDate>Sun, 05 Jan 2025 17:30:36 +0000</pubDate>
</item>
<item>
<title>tablice i ciąg</title>
<link>https://forum.pasja-informatyki.pl/597396/tablice-i-ciag</link>
<description>Potrzebuje pomocy utknęłam i licze na pomoc&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int i , tab[11];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tab[1]=1;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (i=2; i&amp;lt;=11; i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tab[i]=tab[i-1]*3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout &amp;lt;&amp;lt; tab[i] &amp;lt;&amp;lt; endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
program powinien na początku powinien wyświetlać liczbę 1</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597396/tablice-i-ciag</guid>
<pubDate>Mon, 16 Dec 2024 16:20:54 +0000</pubDate>
</item>
<item>
<title>Zamiana małych liter w duże</title>
<link>https://forum.pasja-informatyki.pl/597338/zamiana-malych-liter-w-duze</link>
<description>

&lt;p&gt;Hej, mam za zadanie napisać program, który wyświetli tekst z pliku, po czym zamieni wszystkie małe litery tekstu na duże, powinienem użyć chyba do tego fseek, ale nie wiem jak zrobić. Chce to zrobić aby&amp;nbsp; wyszukać znak małej litery i zamienić go na znak dużej. obecny kod:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;math.h&amp;gt;
#include&amp;lt;time.h&amp;gt;
#include &amp;lt;string.h&amp;gt;




int main()
{
    FILE*plik;
    plik=fopen(&quot;plik.txt&quot;, &quot;r&quot; );
    char napis[100];

    while( fgets(napis, 100, plik)!=NULL)
    {
    printf(&quot;%s&quot;, napis);
    }

    printf(&quot;\n&quot;);


    fclose(plik);








    fclose(plik);


    return 0;

}

&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597338/zamiana-malych-liter-w-duze</guid>
<pubDate>Wed, 11 Dec 2024 16:42:26 +0000</pubDate>
</item>
<item>
<title>Rodzaj palindroma w C++</title>
<link>https://forum.pasja-informatyki.pl/597314/rodzaj-palindroma-w-c</link>
<description>Co to jest fufsopalindromem. ?</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597314/rodzaj-palindroma-w-c</guid>
<pubDate>Mon, 09 Dec 2024 19:41:04 +0000</pubDate>
</item>
<item>
<title>Obiekty w C+ — pytanie o koncept na podstawie problemów w C++</title>
<link>https://forum.pasja-informatyki.pl/597279/obiekty-w-c-pytanie-o-koncept-na-podstawie-problemow-w-c</link>
<description>

&lt;p style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Zwykle programuję w C (a właściwie w jego rozszerzeniu C+), ale zastanawiam się nad obiektowością języka C++.&lt;/p&gt;



&lt;p style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Wygodnie było by mieć możliwość definiowania obiektów (w C++ nazywanych klasami lub strukturami) w blokach strukturalnych programu, tak by były zwalniane przez kompilator automatycznie po opuszczeniu bloku strukturalnego. Jednak ze względu na sposób, w jaki kompilator obsługuje w programie wynikowym te obiekty, skłaniam się do ich nieużywania. Mianowicie są dwa problemy:&lt;/p&gt;



&lt;ol style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;
	

&lt;li style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Obiekty są umieszczane na stosie, co zaburza optymalizację rozmiaru stosu, jego ograniczenia do zmiennych tymczasowych, adresów powrotu z procedur — i przewidywalności.&lt;/li&gt;
	

&lt;li style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Obiekty są zwalniane przy opuszczaniu bloku strukturalnego programu, co jest naturalne w programie jednozadaniowym (jednowątkowym), ale przeszkadza w programie, w którym następują nieliniowe przełączenia wykonywania. Wiem, że w C++ są operatory “new”/“delete”, ale nie dają mi one nic więcej ponad to, co już mam w C+.&lt;/li&gt;
&lt;/ol&gt;



&lt;p style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Wymieniłem powyżej dwa problemy (które teraz już zauważam)&amp;nbsp;z obiektami, ale nie te problemy są najważniejsze. One tylko wskazują, iż brakuje innej koncepcji użycia (implementacji przez kompilator) obiektów w języku programowania.&lt;/p&gt;



&lt;p style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Natomiast teraz zastanowię się nad sensownością użycia obiektów w dotychczasowy sposób.&lt;/p&gt;



&lt;p style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Można zakładać, że obiekt umieszczony na stosie w bloku strukturalnym programu (na przykład ograniczonym klamrami “{” i “}”) zawiera wewnątrz zmienne, które i tak byłyby użyte, gdyby implementować tę funkcjonalność bez użycia klasy C++. Jednak z moich obserwacji wynika, że klasy zawierają uniwersalne funkcjonalności, które są czasem nadmiarowe względem potrzeb bieżących, więc logiczne, że zawierają wiele zmiennych, które są niepotrzebne w danym kontekście użycia, niewykorzystane. W C+ (opartym bezpośrednio na C, ale bez użycia biblioteki standardowej) rozwiązuję ten problem przez definiowanie obiektu podstawowego i obiektu rozszerzającego, który nie musi być tworzony. Na przykład mam w postaci procedur języka C — definiujących&amp;nbsp;konstruktora, destruktora i metody — obiekt tablicy dynamicznej (zdaje się podobnie jak w C++ “vector”) oraz obiekt rozszerzający: ‘iterator’ elementów tablicy dynamicznej zachowujący poprawny i postępujący stan niezależnie od zmieniana zawartości tablicy. Drugi obiekt korzystając ze zmiennych pierwszego obiektu tworzy własne zmienne tylko wtedy, gdy sam zostanie utworzony, i usuwa je po jego wyrzuceniu (z pamięci), tutaj procedurą destruktora, lub zakończeniu ‘iteracji’.&lt;/p&gt;



&lt;p style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Powyższy problem mógłby być rozwiązany w C++ przez przydzielanie wewnątrz klasy danych na stercie w przypadku użycia nadmiarowej funkcjonalności. Ale czy tak jest powszechnie robione? Oraz czy to nie wymaga ręcznego zarządzania tworzeniem/wyrzucaniem obiektów wewnątrz takiej klasy, ponieważ nie ma odpowiednich konstrukcji języka programowania?&lt;/p&gt;



&lt;p style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Ponadto w C+ program wykonuje się w tzw. ‹zadaniach›, które są w powszechnym rozumieniu ograniczonymi wątkami (wirtualnymi lub rzeczywistymi). To powoduje konieczność definiowania zmiennych używanych przez więcej niż jedno ‹zadanie› — w przestrzeni globalnej (poza procedurami). Oczywiście pogrupowałem takie zmienne według zastosowania i umieszczam je w strukturach globalnych. W tym przypadku kompletnie nie mam koncepcji, jak w programie miało by być pomyślane użycie takich zmiennych,&amp;nbsp;w jego składni.&lt;/p&gt;



&lt;p style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Pytania są następujące. O czym w ogóle piszę: czy taki&amp;nbsp;koncept&amp;nbsp;jest już gdziekolwiek realizowany&amp;nbsp;w języku programowania (w naturalny sposób) i co to za koncept? Jak w hipotetycznej składni programu umieszczać obiekty, które są współdzielone pomiędzy ‹zadaniami›? Jak realizować rozszerzalność obiektów nie w postaci rozbudowy (w C++ dziedziczenie), ale w postaci rozszerzania w przypadku użycia — a to wszystko automatyzowane w składni języka?&amp;nbsp;No i oczywiście pytania z poprzednich akapitów.&lt;/p&gt;



&lt;p style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;⁂&lt;/p&gt;



&lt;p style=&quot;border-color: rgb(122, 122, 127) !important; outline-color: rgb(122, 122, 127) !important;&quot;&gt;Wiem mniej więcej, co miałem na myśli w tym pytaniu. Zamiast bloków strukturalnych języka programowania potrzebne mi są bloki wykonawcze, w których dane byłyby przechowywane pomiędzy procedurami,&amp;nbsp;bez względu na hierarchię strukturalną programu,&amp;nbsp;i usuwane na końcu. Program wykonuje się&amp;nbsp;zmieniając stany obiektów. W pewnym stanie obiektów&amp;nbsp;jest początek bloku wykonawczego, a w innym stanie obiektów jest koniec tego bloku wykonawczego. Ponieważ program wykonuje się centrycznie wokół wejścia danych (np. “socket”)&amp;nbsp;lub wyjścia danych (np. rysowanie obiektów graficznych w oknie), a nie wokół obiektu tworzonego pobocznie, nie jest możliwe użycie bloku strukturalnego. Pewną próbą podejścia do tej sytuacji (powiązania bloku strukturalnego z wykonawczym) jest znany z języka Python blok strukturalny “&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.python.org/3.13/reference/compound_stmts.html#the-with-statement&quot; target=&quot;_blank&quot;&gt;with&lt;/a&gt;”, ale on umożliwia tylko proste użycia, które u mnie nie mają zastosowania. Globalne kolekcje obiektów, których używam (np. kolekcja otwartych plików) są tylko wąskim zastosowaniem bloku wykonawczego, tzn. tylko dla obiektu otwartego pliku. Pełne zastosowanie bloku wykonawczego wymagałoby tworzenia tymczasowych globalnych (by były dostępne pomiędzy procedurami)&amp;nbsp;obiektów, w których byłyby zmienne bloku wykonawczego.&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597279/obiekty-w-c-pytanie-o-koncept-na-podstawie-problemow-w-c</guid>
<pubDate>Sun, 08 Dec 2024 06:57:57 +0000</pubDate>
</item>
<item>
<title>Wskaźniki problem z wyswietlaniem</title>
<link>https://forum.pasja-informatyki.pl/597220/wskazniki-problem-z-wyswietlaniem</link>
<description>

&lt;p&gt;Hej mam za zadanie napisać &quot;funkcję, która jako argumenty przyjmuje dwa wskaźniki i działa tak, że oblicza sumę wartości tych wskaźników. Wywołaj tę funkcję by wartości w co drugiej kolumnie zmienić na sumy dwóch sąsiednich w wierszu komórek.&quot;&lt;/p&gt;



&lt;p&gt;Zrobiłem funkcje ale wyświetlają się tylko te kolumny, które są sumą dwóch sąsiadujących, a chce żeby te sąsiadujące też się wyświetlały, co zrobić aby tak było?&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;math.h&amp;gt;
#include&amp;lt;time.h&amp;gt;





void sumaws(int *x, int *y)
{
    int starex=*x;
    int starey=*y;
    *x=*y;
    *y=starex+starey;

}


int main()
{

    srand(time(0));

    int n;
    printf(&quot;Podaj n \n&quot;);
    scanf(&quot;%d&quot;, &amp;amp;n);
    
    printf(&quot;\n&quot;);

	int **p;
    p=(int**)malloc(n*sizeof(int*));

    for(int i=0; i&amp;lt;n; i=i+1)
    {
       *(p+i)=(int*)malloc(n*sizeof(int));
    }



	for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {
       *(*(p+i)+j)=-9+rand()%(10-(-9));
        printf(&quot;%2.d &quot;, *(*(p+i)+j) );
    }
        printf(&quot;\n&quot;);
    }

      printf(&quot;\n\n&quot;);


    for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=1; j&amp;lt;n; j=j+2)
    {

        sumaws(   (*(p+i)+j-1) ,  (*(p+i)+j+1)   );

        printf(&quot;%2.d &quot;, *(*(p+i)+j+1));
    }
        printf(&quot;\n&quot;);
    }






   for(int i=0; i&amp;lt;n; i=i+1)
    {
        free(*(p+i));
    }

    free(p);






    return 0;
}



&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597220/wskazniki-problem-z-wyswietlaniem</guid>
<pubDate>Wed, 04 Dec 2024 14:44:38 +0000</pubDate>
</item>
<item>
<title>SPOJ Flamaster</title>
<link>https://forum.pasja-informatyki.pl/597198/spoj-flamaster</link>
<description>

&lt;p&gt;Witam&lt;/p&gt;



&lt;p&gt;Napisałam kod w C++ do zadania Flamaster, opierając się troszkę na kodach innych. Problem jest taki że u mnie wszystko działa a w spoju wywala błędna odpowiedź. Testowałam kod u siebie dla różnych danych i wszystko działa, dlatego nie rozumiem czemu spoj nie chce zaakceptować odpowiedzi. Jestem początkująca i dopiero zaczynam przygodę&amp;nbsp;z programowaniem w C++.&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;

using namespace std;

int ile, powtorka;
string napis;

int main()
{
    cin &amp;gt;&amp;gt; ile;

    for(int i = 1; i &amp;lt;=ile; i++)
    {
        cin &amp;gt;&amp;gt; napis;
        char aktualnyZnak;

        for(int j = 0; j &amp;lt; napis.length(); j++)
        {
            powtorka = 1;
            aktualnyZnak = napis[j];
            while(napis[j] == napis[j+1])
            {
                powtorka++;
                j++;
            }
            if(powtorka == 1)
            {
               cout &amp;lt;&amp;lt; aktualnyZnak;
            }
            else if(powtorka == 2)
            {
                cout &amp;lt;&amp;lt; aktualnyZnak;
                cout &amp;lt;&amp;lt; aktualnyZnak;
            }
            else
            {
                cout &amp;lt;&amp;lt; aktualnyZnak;
                cout &amp;lt;&amp;lt; powtorka;
            }
        }
    }
    return 0;
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597198/spoj-flamaster</guid>
<pubDate>Tue, 03 Dec 2024 19:29:59 +0000</pubDate>
</item>
<item>
<title>Programy wyświetlający tabele</title>
<link>https://forum.pasja-informatyki.pl/597167/programy-wyswietlajacy-tabele</link>
<description>

&lt;p&gt;Hej mam za zadanie zrobić program, który &quot;. Utworzy tablicę rozmiaru n i zapisze do niej n numerów dni w roku odpowiadających datom podanym przez użytkownika używając do tego celu funkcji&quot; Zrobiłem funkcje i trochę się pogubiłem w jaki sposób należy to zrobić? Z góry dzięki&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;math.h&amp;gt;

int dzienroku(int miesiac, int dzien)

{
    int dr;

	switch(miesiac)
	{

    case 1:
    miesiac=0;
    break;

	case 2:
    miesiac=31;
    break;

    case 3:
    miesiac=31+28;
    break;

    case 4:
    miesiac=31+28+31;
    break;

    case 5:
    miesiac=31+28+31+30;
    break;

    case 6:
    miesiac=31+28+31+30+31;
    break;

    case 7:
    miesiac=31+28+31+30+31+30;
    break;

   	case 8:
    miesiac=31+28+31+30+31+30+31;
    break;

    case 9:
    miesiac=31+28+31+30+31+30+31+31;
    break;

    case 10:
    miesiac=31+28+31+30+31+30+31+31+30;
    break;

    case 11:
    miesiac=31+28+31+30+31+30+31+31+30+31;
    break;

    case 12:
    miesiac=31+28+31+30+31+30+31+31+30+31+30;
    break;

	}

    dr=miesiac+dzien;

    return dr;
}

int main()
{

    int iledat;
    printf(&quot;\nIle dat chcesz podac:&quot;);
    scanf(&quot;%d&quot;, &amp;amp;iledat);

    int m2[iledat];
    int d2[iledat];
    int tab[iledat];
    printf(&quot;Podaj daty:\n&quot;);

    for(int i=0; i&amp;lt;iledat; i=i+1)
    {
        printf(&quot;Podaj Miesiac\n&quot;);
        scanf(&quot;%d&quot;, &amp;amp;m2[iledat]);
        printf(&quot;Podaj Dzien\n&quot;);
        scanf(&quot;%d&quot;, &amp;amp;d2[iledat]);
    }


      for (int i=0; i&amp;lt;iledat; ++i)
    {
        tab[iledat]=dzienroku(m2[iledat],d2[iledat]);
        printf(&quot;%d &quot;, tab[iledat]);
        printf(&quot;\n&quot;);
    }

    return 0;
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597167/programy-wyswietlajacy-tabele</guid>
<pubDate>Mon, 02 Dec 2024 18:24:22 +0000</pubDate>
</item>
<item>
<title>Program tworzący pliki na dysku google</title>
<link>https://forum.pasja-informatyki.pl/597160/program-tworzacy-pliki-na-dysku-google</link>
<description>Potrzebuje zrobić program który będzie pobierał sobie dane z mojego dysku google przeliczał a następnie je tam zapisywał pobieranie udało mi się zrobić z pomocą pliku batch ale nie mam pomysłu jak zrobić zapisywanie chciałbym zrobić to tak żeby działało na każdym komputerze czyli najlepiej żeby samo logowało się do dysku i zarządzało danymi</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597160/program-tworzacy-pliki-na-dysku-google</guid>
<pubDate>Mon, 02 Dec 2024 17:55:53 +0000</pubDate>
</item>
<item>
<title>Wskaźniki macierzy nie wyświetla liczby zero</title>
<link>https://forum.pasja-informatyki.pl/597150/wskazniki-macierzy-nie-wyswietla-liczby-zero</link>
<description>

&lt;p&gt;Hej, nie mam pojęcia czemu liczba zero nie jest wyświetlana w macierzy, ilość zer natomiast działa dobrze, i nie mam pomysłu jak to naprawić, z góry dzięki&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;math.h&amp;gt;
#include&amp;lt;time.h&amp;gt;



int main()
{


    int n;
    printf(&quot;Podaj n\n&quot;);
    scanf(&quot;%d&quot;, &amp;amp;n);


	int **p, suma=0,sumaprawej=0, ilezer=0;
    p=(int**)malloc(n*sizeof(int*));

    for(int i=0; i&amp;lt;n; i=i+1)
    {
       *(p+i)=(int*)malloc(n*sizeof(int));
    }



	for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {
        *(*(p+i)+j)=-1+rand()%(2-(-1));
        printf(&quot;%3.d &quot;, *(*(p+i)+j) );
    }
        printf(&quot;\n&quot;);
    }



    for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {

        if((*(*(p+i)+j))==0)
        {
            ilezer=ilezer+1;
        }
    }
    }


    for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {

         if(i==j)
        {
            suma=suma+*(*(p+i)+j);
        }

    }
    }


    for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {

        if(i==(n-1-j) || i==j==n)
        {
            sumaprawej=sumaprawej+*(*(p+i)+j);
        }
    }
    }

    printf(&quot;Suma na przekatnej lewej: %d\n&quot;, suma);
    printf(&quot;Suma na przekatnej prawej: %d\n&quot;, sumaprawej);
    printf(&quot;Ilosc zer: %d\n&quot;, ilezer);








    for(int i=0; i&amp;lt;n; i=i+1)
    {
        free(*(p+i));
    }

    free(p);





    return 0;
}


&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597150/wskazniki-macierzy-nie-wyswietla-liczby-zero</guid>
<pubDate>Mon, 02 Dec 2024 17:26:31 +0000</pubDate>
</item>
<item>
<title>Zamiana wierszy miejscami w macierzy</title>
<link>https://forum.pasja-informatyki.pl/597148/zamiana-wierszy-miejscami-w-macierzy</link>
<description>

&lt;p&gt;Hej, chciałbym zamienić ostatni wiersz z przed ostatnim, ale nie mam pojęcia jak to zrobić, temp tutaj nie zadziała, ponieważ używam wskaźników, jak inaczej mógłbym to zrobić?&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;math.h&amp;gt;
#include&amp;lt;time.h&amp;gt;



int main()
{



    int n;
    printf(&quot;Podaj n\n&quot;);
    scanf(&quot;%d&quot;, &amp;amp;n);


	int **p, suma=0,sumaprawej=0;
    p=(int**)malloc(n*sizeof(int*));

    for(int i=0; i&amp;lt;n; i=i+1)
    {
       *(p+i)=(int*)malloc(n*sizeof(int));
    }



	for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {
        *(*(p+i)+j)=(i+1)*(j+1);
        printf(&quot;%3.d &quot;, *(*(p+i)+j) );
    }
        printf(&quot;\n&quot;);
    }

    printf(&quot;\n&quot;);

    for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {

    
        printf(&quot;%3.d &quot;, *(*(p+i)+j) );
    }
        printf(&quot;\n&quot;);
    }





   for(int i=0; i&amp;lt;n; i=i+1)
    {
        free(*(p+i));
    }

    free(p);






    return 0;
}


&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597148/zamiana-wierszy-miejscami-w-macierzy</guid>
<pubDate>Mon, 02 Dec 2024 17:19:50 +0000</pubDate>
</item>
<item>
<title>Wskaźniki programowanie język c</title>
<link>https://forum.pasja-informatyki.pl/597137/wskazniki-programowanie-jezyk-c</link>
<description>

&lt;p&gt;Witam, program co prawda działa jak powinien, ale na końcu wyświetla, że gdzieś jest błąd, mógłby mi ktoś napisać gdzie dokładnie? z góry dzięki&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;math.h&amp;gt;
#include&amp;lt;time.h&amp;gt;



int main()
{


    int n;
    printf(&quot;Podaj n\n&quot;);
    scanf(&quot;%d&quot;, &amp;amp;n);


	int **p, suma=0,sumaprawej=0;
    p=(int**)malloc(n*sizeof(int*));

    for(int i=0; i&amp;lt;n; i=i+1)
    {
       *(p+i)=(int*)malloc(n*sizeof(int));

          for(int j=0; j&amp;lt;n; j=j+1)
    {
        *(*(p+i)+j)=(int**)malloc(n*sizeof(int*));
    }
    }



	for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {
        *(*(p+i)+j)=(i+1)*(j+1);
        printf(&quot;%3.d &quot;, *(*(p+i)+j) );
    }
        printf(&quot;\n&quot;);
    }


    for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {

         if(i==j)
        {
            suma=suma+*(*(p+i)+j);
        }

    }
    }


    for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {

        if(i==(n-1-j) || i==j==n)
        {
            sumaprawej=sumaprawej+*(*(p+i)+j);
        }
    }
    }

    printf(&quot;Suma na przekatnej lewej: %d\n&quot;, suma);
    printf(&quot;Suma na przekatnej prawej: %d\n&quot;, sumaprawej);






    for(int i=0; i&amp;lt;n; i=i+1)
    {
        for(int j=0; j&amp;lt;n; j=j+1)
    {
       free(*(*(p+i)+j));
    }
    }



    for(int i=0; i&amp;lt;10; i=i+1)
    {
        free(*(p+i));
    }

    free(p);





    return 0;
}


&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597137/wskazniki-programowanie-jezyk-c</guid>
<pubDate>Mon, 02 Dec 2024 16:25:48 +0000</pubDate>
</item>
<item>
<title>Sortowanie bąbelkowe wskaźniki</title>
<link>https://forum.pasja-informatyki.pl/597057/sortowanie-babelkowe-wskazniki</link>
<description>

&lt;p&gt;Chce aby wyświetlano 2 razy 20 losowych liczb, ale za drugim razem były posortowane nie malejąco, gdzie tu jest błąd? Z góry dzięki za pomoc&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;math.h&amp;gt;
#include&amp;lt;time.h&amp;gt;

void sortowanie(int n, int *T)
{

&amp;nbsp; &amp;nbsp; int i,j,x;
&amp;nbsp; &amp;nbsp; for (i=1; i&amp;lt;n; i++)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (j=n-1; j&amp;gt;=i; j--)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (T[j-1]&amp;gt;T[j])
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;x=T[j];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;T[j]=T[j-1];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;T[j-1]=x;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&amp;nbsp; &amp;nbsp; }

}

int main()
{

&amp;nbsp; &amp;nbsp; srand(time(0));

&amp;nbsp;&amp;nbsp; &amp;nbsp;int *p;

&amp;nbsp;&amp;nbsp; &amp;nbsp;p = (int*)malloc(20*sizeof(int));

&amp;nbsp;&amp;nbsp; &amp;nbsp;int najwieksza=-100, najmniejsza=100;
&amp;nbsp;&amp;nbsp; &amp;nbsp;int druganajwieksza=-99, druganajmniejsza=99;

&amp;nbsp;&amp;nbsp; &amp;nbsp;for(int i=0; i&amp;lt;20; i=i+1)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *(p+i)=-99+rand()%(100-(-99));

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf(&quot;%d &quot;, &amp;nbsp;*(p+i));

&amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; printf(&quot;\n&quot;);

&amp;nbsp; &amp;nbsp; for(int i=0; i&amp;lt;20; i=i+1)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *(p+i)=-99+rand()%(100-(-99));


&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int n=20;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sortowanie(n, (p+i));
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; printf(&quot;%d &quot;, &amp;nbsp;*(p+i));


&amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; free(p);

&amp;nbsp; &amp;nbsp; return 0;
}


&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597057/sortowanie-babelkowe-wskazniki</guid>
<pubDate>Thu, 28 Nov 2024 18:06:36 +0000</pubDate>
</item>
<item>
<title>Kurs C++ 23 albo 20</title>
<link>https://forum.pasja-informatyki.pl/597032/kurs-c-23-albo-20</link>
<description>Hej, studiuję informatykę i znam podstawy c++, ale głównie starszych wersji, których uczą w liceum. Natomiast na studiach mam obecnie taki przedmiot jak właśnie programowanie w c++, które nie wygląda tak jak się tego spodziewałam. Na ćwiczeniach facet głównie pisze kody w c++ 23, 20 i w ogóle w tych nowszych. Składnia tego języka strasznie różni się od tego co już umiem dlatego poszukuję kursu c++ ale właśnie jakiegoś nowszego. Może znacie taki kurs i moglibyście mi go polecić bo niestety nie mogę znależć nic fajnego.</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/597032/kurs-c-23-albo-20</guid>
<pubDate>Wed, 27 Nov 2024 23:26:27 +0000</pubDate>
</item>
<item>
<title>Liczby losowe programowanie w języku C</title>
<link>https://forum.pasja-informatyki.pl/596523/liczby-losowe-programowanie-w-jezyku-c</link>
<description>

&lt;p&gt;Witam mam problem ze zrobieniem lub być może zrozumieniem zadania, otóż mam wykonany poniższy program i muszę w nim napisać kod, który wyświetla liczbe, którą jest cytuje &quot;liczba mówiąca ile kolejnych liczb licząc od końca tablicy tworzy ciąg arytmetyczny (precyzyjniej: największe k, takie że k ostatnich elementów w tablicy jest ciągiem arytmetycznym)&quot;. Nie jestem pewien czy dobrze to zrozumiałem, więc może tu jest problem, ale nie wiem jak to zrobić, z góry dziękuje za pomoc&lt;/p&gt;



&lt;pre class=&quot;brush:plain;&quot;&gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;math.h&amp;gt;
#include&amp;lt;time.h&amp;gt;


int main()
{
    srand(time(0));

    int n1, n2;

    printf(&quot;Podaj 2 liczby naturalne\n&quot;);
    scanf(&quot;%d %d&quot;, &amp;amp;n1, &amp;amp;n2);

    int mac[n1][n2];


   for (int i=0; i&amp;lt;n1; ++i)
    {
        for (int j=0; j&amp;lt;n2; ++j)
        {
            mac[i][j]=-9+rand()%(10-(-9));
            printf(&quot;%d &quot;, mac[i][j]);
        }
        printf(&quot;\n&quot;);
    }


    return 0;

}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/596523/liczby-losowe-programowanie-w-jezyku-c</guid>
<pubDate>Tue, 05 Nov 2024 20:27:59 +0000</pubDate>
</item>
<item>
<title>Zamiana string na dwa int'y</title>
<link>https://forum.pasja-informatyki.pl/596514/zamiana-string-na-dwa-inty</link>
<description>

&lt;p&gt;Chcialem zbudowac prosty kalkulator. Koduje od okolo miesiaca, ale to moj pierwszy wiekszy projekt (przynajmniej wiekszy od nauki pojedynczej funkcji) i zastanawiam sie jak zamienic string np. 9+10 tak aby utwozyc osobno liczbe 9 i liczbe 10 w postaci int'ow oraz wykryc znak dzialania. Jakies porady? PS: zastanawialem sie nad zakodowaniem tego z uzyciem kodu ascii, gdzie od danej liczby w stringu usune 48&amp;nbsp;i przeksztalce to na inta:&lt;/p&gt;



&lt;p&gt;-&amp;gt; (int(wynik)-'0');&lt;/p&gt;



&lt;p&gt;conio.h i fstring sa dodane na przyszlosc aby zrobic miedzy innymi historie dzialan&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;iostream&amp;gt;

#include &amp;lt;conio.h&amp;gt;

#include &amp;lt;cmath&amp;gt;

#include &amp;lt;fstream&amp;gt;



using namespace std;



string dzialanie;

float wynik,liczba;

int i,n;

int Dodawanie(float wynik, float liczba)

{

wynik = wynik + liczba;

}



int Odejmowanie(float wynik, float liczba)

{

wynik = wynik - liczba;

}



int main(int argc, char *argv[ ])

{

cout&amp;lt;&amp;lt;&quot;Zapisz dzialanie (Kolejnosc wykonywania dzialan jeszcze NIE dodana, wiec dzialania beda wykonywane od lewej do prawej): &quot;&amp;lt;&amp;lt;endl;

cin&amp;gt;&amp;gt;dzialanie;



for(i=0;i=dzialanie.length();i++)

&amp;nbsp; &amp;nbsp; {

if(dzialanie[i]=&quot;+&quot;)

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; &amp;nbsp;Dodawanie(wynik,liczba);

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;

else if(dzialanie[i]=&quot;-&quot;)

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {

&amp;nbsp; &amp;nbsp; Odejmowanie(wynik,liczba);

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; }

}&lt;/pre&gt;



&lt;p&gt;Dziekuje za wszelka pomoc. Wiem ze daloby sie zrobic to efektywniej ale nie jestem jeszcze przyzwczajony do logiki komputera. Pozdrawiam wszystkich pomocnych. :)&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/596514/zamiana-string-na-dwa-inty</guid>
<pubDate>Tue, 05 Nov 2024 18:26:37 +0000</pubDate>
</item>
</channel>
</rss>