<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Przyszły Programista - Algorytmy</title>
<link>http://forum.przyszlyprogramista.pl/?qa=questions/algorytmy</link>
<description>Powered by Question2Answer</description>
<item>
<title>undefined reference</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1957/undefined-reference</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;Co tutaj jest źle, bo pojawia mi się błąd undefined reference to `PlikZAdresatami::pobierzIdUzytkownikaZDanychOddzielonychPionowymiKreskami(std::__cxx11::basic_string&amp;lt;char, std::char_traits&amp;lt;char&amp;gt;, std::allocator&amp;lt;char&amp;gt; &amp;gt;)'?&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
int pobierzIdUzytkownikaZDanychOddzielonychPionowymiKreskami(string daneJednegoAdresataOddzielonePionowymiKreskami)
{
    int pozycjaRozpoczeciaIdUzytkownika = daneJednegoAdresataOddzielonePionowymiKreskami.find_first_of('|') + 1;
    int idUzytkownika = MetodyPomocnicze::konwersjaStringNaInt(MetodyPomocnicze::pobierzLiczbe(daneJednegoAdresataOddzielonePionowymiKreskami, pozycjaRozpoczeciaIdUzytkownika));
    return idUzytkownika;
}
vector&amp;lt;Adresat&amp;gt; PlikZAdresatami::wczytajAdresatowZalogowanegoUzytkownikaZPliku(int idZalogowanegoUzytkownika)
{
    Adresat adresat;
    vector &amp;lt;Adresat&amp;gt; adresaci;
    string daneJednegoAdresataOddzielonePionowymiKreskami = &quot;&quot;;
    string daneOstaniegoAdresataWPliku = &quot;&quot;;
    fstream plikTekstowy;
    plikTekstowy.open(nazwaPlikuZAdresatami.c_str(), ios::in);

    if (plikTekstowy.is_open() == true)
    {
        while (getline(plikTekstowy, daneJednegoAdresataOddzielonePionowymiKreskami))
        {
            if(idZalogowanegoUzytkownika == pobierzIdUzytkownikaZDanychOddzielonychPionowymiKreskami(daneJednegoAdresataOddzielonePionowymiKreskami))
            {
                adresat = pobierzDaneAdresata(daneJednegoAdresataOddzielonePionowymiKreskami);
                adresaci.push_back(adresat);
            }
        }
        daneOstaniegoAdresataWPliku = daneJednegoAdresataOddzielonePionowymiKreskami;
        plikTekstowy.close();
    }
    else
        cout &amp;lt;&amp;lt; &quot;Nie udalo sie otworzyc pliku i wczytac danych.&quot; &amp;lt;&amp;lt; endl;

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

&lt;p&gt;Tutaj plik .h:&lt;/p&gt;

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

#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;fstream&amp;gt;
#include &amp;lt;cstdlib&amp;gt;
#include &amp;lt;sstream&amp;gt;

#include &quot;Adresat.h&quot;
#include &quot;MetodyPomocnicze.h&quot;

using namespace std;

class PlikZAdresatami
{
    const string nazwaPlikuZAdresatami;
    string zamienDaneAdresataNaLinieZDanymiOddzielonymiPionowymiKreskami(Adresat adresat);
    void usunPlik(string nazwaPlikuTymczasowego, string nazwaPlikuZAdresatami);
    void zmienNazwePliku(string nazwaPlikuTymczasowego, string nazwaPlikuZAdresatami);

public:
    PlikZAdresatami(string nazwaPliku) : nazwaPlikuZAdresatami(nazwaPliku){};
    PlikZAdresatami() : nazwaPlikuZAdresatami(&quot;&quot;) {}
    void dopiszAdresataDoPliku(Adresat adresat);
    bool czyPlikJestPusty();
    void wyczyscWektorAdresaci();
    Adresat pobierzDaneAdresata(string daneJendegoAdresataOddzielonePionowymiKreskami);
    int pobierzIdAdresataZDanychOddzielonychPionowymiKreskami(string daneJednegoAdresataOddzielonePionowymiKreskami);
    int pobierzIdUzytkownikaZDanychOddzielonychPionowymiKreskami(string daneJednegoAdresataOddzielonePionowymiKreskami);
    vector &amp;lt;Adresat&amp;gt; wczytajAdresatowZalogowanegoUzytkownikaZPliku(int idZalogowanegoUzytkownika);
};

#endif&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1957/undefined-reference</guid>
<pubDate>Tue, 16 Apr 2024 15:08:34 +0000</pubDate>
</item>
<item>
<title>zmienne globalne/odwoływanie się do zmiennej z następnej funkcji</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1812/zmienne-globalne-odwo%C5%82ywanie-zmiennej-nast%C4%99pnej-funkcji</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
Jeśli w danej funkcji projektu chcemy odwołać się do danej zmiennej z innej funkcji, to musi znajdować się przed nią, bo inaczej pojawia się błąd deklaracji, a jeśli ta funkcja nie może znajdować się wcześniej, np. mam funkcję, która odpowiada za logowanie użytkownika i chciałabym, żeby zwracała nr ID aktualnie zalogowanego użytkownika, żeby wykorzystać go do funkcji dodającej adresata do pliku, ale funkcja logująca musi znajdować się za nią, więc czy w takiej sytuacji, można zadeklarować zmienną globalną, która będzie odczytywać z niej ten numer ID, bo nie wiem jak inaczej mam to zrobić?</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1812/zmienne-globalne-odwo%C5%82ywanie-zmiennej-nast%C4%99pnej-funkcji</guid>
<pubDate>Fri, 19 Jan 2024 09:27:16 +0000</pubDate>
</item>
<item>
<title>zadanie JGGHACK - Łamacz gg</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1773/zadanie-jgghack-%C5%82amacz-gg</link>
<description>Cześć,&lt;br /&gt;
&lt;br /&gt;
Proszę o wskazówkę, co jest źle w tym algorytmie:&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
string odszyfrowujemyHaslo(string zaszyfrowaneHaslo)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int dlugosc = zaszyfrowaneHaslo.length();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string tablicaLiter = &amp;quot;ABCDEFGHIJKLMNOP&amp;quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int liczbyPierwszaLitera[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int liczbyDrugaLitera[] = {0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string odszyfrowaneHaslo = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int i = 0; i &amp;lt;= dlugosc-1; i = i+2)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int j = 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;int wartosc1[16], wartosc2[16];&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;while (j &amp;lt; 16)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (zaszyfrowaneHaslo[i] == tablicaLiter[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;{&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;wartosc1[i] = liczbyPierwszaLitera[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;}&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;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;}&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;int k = 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;while(k &amp;lt; 16)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (zaszyfrowaneHaslo[i+1] == tablicaLiter[k])&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wartosc2[i+1] = liczbyDrugaLitera[k];&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;k++;&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;odszyfrowaneHaslo += char(wartosc1[i]) + char(wartosc2[i+1]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return odszyfrowaneHaslo;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string zaszyfrowaneHaslo = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(getline(cin, zaszyfrowaneHaslo))&lt;br /&gt;
&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;cout &amp;lt;&amp;lt; odszyfrowujemyHaslo(zaszyfrowaneHaslo) &amp;lt;&amp;lt; endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;
}</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1773/zadanie-jgghack-%C5%82amacz-gg</guid>
<pubDate>Thu, 05 Oct 2023 10:25:01 +0000</pubDate>
</item>
<item>
<title>JS - filtrowanie wyników</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1294/js-filtrowanie-wynik%C3%B3w</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;Potrzebuję podpowiedzi odnośnie filtrowania danych przez funkcje JS. Mam kod napisany w Cypress i JS, który pobiera pewne elementy na stronie, następnie odfiltrowuje mi te, których nie potrzebuje/nie spełniają wymagań. Używam do tego RegExa i kilku funkcji. Pytanie brzmi - czy można ten ciąg zastąpić prostszym wyrażeniem ? Dodam, że owa linijka robi to co chcę - chciałbym jednak uprościć kod.&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
...kod pobierający pewne dane...
const RegExFilter = /[a-zA-Ząęćłżź]{3}/;
const splitHeaders = [...$headers].map(headers =&amp;gt; headers.innerText).filter(item =&amp;gt; item.match(RegExFilter)).reverse();&lt;/pre&gt;

&lt;p&gt;Czy jakiś magik/fan/miłośnik&amp;nbsp; JS coś podpowie ?&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1294/js-filtrowanie-wynik%C3%B3w</guid>
<pubDate>Thu, 22 Dec 2022 10:47:08 +0000</pubDate>
</item>
<item>
<title>Seminarium 12 - deszyfrator JSZYCER</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1182/seminarium-12-deszyfrator-jszycer</link>
<description>&lt;p&gt;Cześć,&lt;br&gt;
&lt;br&gt;
Mija drugi dzień jak walczę z zapisaniem warunków dla przesunięcia kodu w lewo(lub w prawo) dla zmiennej określającej ilość przesunięć. Newralgiczne jest przejście pomiędzy A(65) i Z(90)+&lt;br&gt;
&lt;br&gt;
Jakieś wskazówki lub rady mile widziane&lt;/p&gt;

&lt;pre class=&quot;brush:cpp;&quot;&gt;
  for(int i = 0; i &amp;lt; textToDecode.length(); i++)
    {
        if(textToDecode[i] == 32)
            text = 32;

        if (textToDecode[i] &amp;gt;= 65 &amp;amp;&amp;amp; textToDecode[i] &amp;lt;= 90)
        {
            text = textToDecode[i] + (26 - counter);
        }
        if(text &amp;gt; 90)
        {
            text = text - 26;
        }
        cout &amp;lt;&amp;lt; text;
    }&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1182/seminarium-12-deszyfrator-jszycer</guid>
<pubDate>Tue, 22 Nov 2022 12:47:51 +0000</pubDate>
</item>
<item>
<title>Książka adresowa, vectory</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1140/ksi%C4%85%C5%BCka-adresowa-vectory</link>
<description>&lt;p&gt;Serwus,&lt;/p&gt;

&lt;p&gt;utknąłem w seminarium 17 przy zapisie do pliku.&lt;/p&gt;

&lt;p&gt;Wiem, że do pliku powinienem na końcu wrzucać, ale wole już teraz mieć mniej do roboty niż za każdym razem pisać z palca użytkowników.&lt;/p&gt;

&lt;p&gt;Do rzeczy.&lt;/p&gt;

&lt;p&gt;Kiedy chcę zapisać dane mojej osoby do pliku (narazie nie uwzględniam tego, że muszę zapisać do jednej linii), to wywala mi błąd przy klamrze, że operandem jest moja struktura i int.&lt;/p&gt;

&lt;p&gt;Jakieś tipy co przeoczyłem?&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;fstream&amp;gt;

using namespace std;
fstream file;

struct Person {

    int id;
    string name, surname, phone_number, adress, email;

};

string load_line() {

    string input;
    cin.ignore();
    getline(cin, input);
    return input;
}

int insert_persons_data( Person new_persons, int persons_amount) {

    string name, surname, phone_number, email, adress;

    cout &amp;lt;&amp;lt; &quot;insert name:&quot; &amp;lt;&amp;lt; endl;
    new_persons.name = load_line();
    cout &amp;lt;&amp;lt; &quot;insert surname: &quot; &amp;lt;&amp;lt; endl;
    new_persons.surname = load_line();
    cout &amp;lt;&amp;lt; &quot;insert phone number: &quot; &amp;lt;&amp;lt; endl;
    new_persons.phone_number = load_line();
    cout &amp;lt;&amp;lt; &quot;insert adress: &quot; &amp;lt;&amp;lt; endl;
    new_persons.adress = load_line();
    cout &amp;lt;&amp;lt; &quot;insert email: &quot; &amp;lt;&amp;lt; endl;
    new_persons.email = load_line();

    new_persons[persons_amount].id = persons_amount +1;
    new_persons[persons_amount].name = name;
    new_persons[persons_amount].surname = surname;
    new_persons[persons_amount].phone_number = phone_number;
    new_persons[persons_amount].email = email;
    new_persons[persons_amount].adress = adress;

    file.open(&quot;upgraded_adress_book.txt&quot;, ios :: out | ios :: app);

    file &amp;lt;&amp;lt; persons_amount &amp;lt;&amp;lt; endl;
    file &amp;lt;&amp;lt; name &amp;lt;&amp;lt; endl;
    file &amp;lt;&amp;lt; surname &amp;lt;&amp;lt; endl;
    file &amp;lt;&amp;lt; phone_number &amp;lt;&amp;lt; endl;
    file &amp;lt;&amp;lt; email &amp;lt;&amp;lt; endl;
    file &amp;lt;&amp;lt; adress &amp;lt;&amp;lt; endl;

    file.close();

    return persons_amount + 1;
}

void showing_people_by_surname (vector &amp;lt;Person&amp;gt; &amp;amp;new_persons, int persons_amount){

    string surname;

    cout &amp;lt;&amp;lt; &quot;enter surname to show friends with that name: &quot; &amp;lt;&amp;lt; endl;
    cin &amp;gt;&amp;gt; surname;

    int i = 0;
    int surname_number = 0;

    while (i &amp;lt; persons_amount) {
        if (new_persons[i].surname == surname) {
            cout &amp;lt;&amp;lt; &quot;Friend's ID &quot; &amp;lt;&amp;lt; &quot; --------- &quot; &amp;lt;&amp;lt; new_persons[i].id &amp;lt;&amp;lt; endl;
            cout &amp;lt;&amp;lt; &quot;Friend's name &quot; &amp;lt;&amp;lt; &quot; --------- &quot; &amp;lt;&amp;lt; new_persons[i].name &amp;lt;&amp;lt; endl;
            cout &amp;lt;&amp;lt; &quot;Friend's surname &quot; &amp;lt;&amp;lt; &quot; --------- &quot; &amp;lt;&amp;lt; new_persons[i].surname &amp;lt;&amp;lt; endl;
            cout &amp;lt;&amp;lt; &quot;Friend's phone number &quot; &amp;lt;&amp;lt; &quot; --------- &quot; &amp;lt;&amp;lt; new_persons[i].phone_number &amp;lt;&amp;lt; endl;
            cout &amp;lt;&amp;lt; &quot;Friend's e-mail &quot; &amp;lt;&amp;lt; &quot; --------- &quot; &amp;lt;&amp;lt; new_persons[i].email &amp;lt;&amp;lt; endl;
            cout &amp;lt;&amp;lt; &quot;Friend's adress &quot; &amp;lt;&amp;lt; &quot; --------- &quot; &amp;lt;&amp;lt;  new_persons[i].adress &amp;lt;&amp;lt; endl;
            cout &amp;lt;&amp;lt; endl;
            surname_number++;
        }
        i++;
    }
    if (surname_number == 0)
        cout &amp;lt;&amp;lt; &quot;no person with that surname!&quot; &amp;lt;&amp;lt; endl;
}


void every_single_person(vector &amp;lt;Person&amp;gt; &amp;amp;new_persons, int persons_amount) {

    for (int i = 0; i &amp;lt; persons_amount; i++) {
        cout &amp;lt;&amp;lt; new_persons[i].id &amp;lt;&amp;lt; endl;
        cout &amp;lt;&amp;lt; new_persons[i].name &amp;lt;&amp;lt; endl;
        cout &amp;lt;&amp;lt; new_persons[i].surname &amp;lt;&amp;lt; endl;
        cout &amp;lt;&amp;lt; new_persons[i].phone_number &amp;lt;&amp;lt; endl;
        cout &amp;lt;&amp;lt; new_persons[i].email &amp;lt;&amp;lt; endl;
        cout &amp;lt;&amp;lt; new_persons[i].adress &amp;lt;&amp;lt; endl;
    }
}

int loading_from_file(vector &amp;lt;Person&amp;gt; &amp;amp;new_persons ) {

    int persons_amount = 0;
    string line;
    int line_number = 1;
    file.open(&quot;upgraded_adress_book.txt&quot;, ios :: in);
    while (getline(file, line)) {
        switch(line_number){
        case 1:
        new_persons[persons_amount].id = atoi(line.c_str());
        break;
    case 2:
        new_persons[persons_amount].name = line;
        break;
    case 3:
        new_persons[persons_amount].surname = line;
        break;
    case 4:
        new_persons[persons_amount].phone_number = line;
        break;
    case 5:
        new_persons[persons_amount].email = line;
        break;
    case 6:
        new_persons[persons_amount].adress = line;
        break;
    }
    if (line_number == 6 ) {
        line_number = 0;
        persons_amount++;
    }
    line_number++;
}
file.close();

return persons_amount ;
}

int main() {
    char choice;
    int persons_amount = 0;
    Person new_persons;
    vector &amp;lt;Person&amp;gt; people;

    persons_amount = loading_from_file(people);

    while (true) {
        system(&quot;cls&quot;);
        cout &amp;lt;&amp;lt; &quot;1. Add friend&quot; &amp;lt;&amp;lt; endl;
        cout &amp;lt;&amp;lt; &quot;2. Search by name&quot; &amp;lt;&amp;lt; endl;
        cout &amp;lt;&amp;lt; &quot;3. Search by surname&quot; &amp;lt;&amp;lt; endl;
        cout &amp;lt;&amp;lt; &quot;4. Show my friends list&quot; &amp;lt;&amp;lt; endl;
        cout &amp;lt;&amp;lt; &quot;5. End program&quot; &amp;lt;&amp;lt; endl;
        cin &amp;gt;&amp;gt; choice;


        switch (choice) {

        case '1' : {
            persons_amount = insert_persons_data(new_persons, persons_amount);
            people.push_back(new_persons);
            persons_amount = people.size();
            system(&quot;pause&quot;);
            break;
        }
        case '2' : {
            //showing_friend_by_name(friendd,persons_amount);
            system(&quot;pause&quot;);
            break;
        }
        case '3' : {
            showing_people_by_surname(people, persons_amount);
            system(&quot;pause&quot;);
            break;
        }
        case '4' : {
            every_single_person(people, persons_amount);
            system(&quot;pause&quot;);
            break;
        }
        case '5': {
            exit(0);
        }
        default: {
            cout &amp;lt;&amp;lt; &quot;try that again &quot; &amp;lt;&amp;lt; endl;
            system(&quot;pause&quot;);
        }
        }
    }

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

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1140/ksi%C4%85%C5%BCka-adresowa-vectory</guid>
<pubDate>Wed, 16 Nov 2022 17:22:53 +0000</pubDate>
</item>
<item>
<title>SPOJ  FR_12_06 - Plusy i minusy</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1105/spoj-fr_12_06-plusy-i-minusy</link>
<description>&lt;p&gt;Hej,&lt;/p&gt;

&lt;p&gt;Potrzebuję pomocy z zadaniem ze spoj.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://pl.spoj.com/WSDOCPP/problems/FR_12_06/&quot; rel=&quot;nofollow&quot;&gt;https://pl.spoj.com/WSDOCPP/problems/FR_12_06/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oto mój kod;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ideone.com/5VpAQd&quot; rel=&quot;nofollow&quot;&gt;https://ideone.com/5VpAQd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Testy z przykładów na ideone wchodzą prawidłowo, a sędzia około 11 testu wyświetla błędna odpowiedź.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Zamiast tworzenia tablicy z plusami i minusami próbowałem z pętlą while ( &lt;a rel=&quot;nofollow&quot; href=&quot;http://www.opengroup.org/onlinepubs/009695399/functions/cin.html&quot;&gt;cin&lt;/a&gt; &amp;gt;&amp;gt; sign), lecz to też nie pomogło&lt;/p&gt;

&lt;p&gt;Ma ktoś może pomysł jak zmodyfikować program żeby sędzia go zaakceptował?&amp;nbsp;&lt;img alt=&quot;smiley&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/regular_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;smiley&quot;&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1105/spoj-fr_12_06-plusy-i-minusy</guid>
<pubDate>Thu, 10 Nov 2022 18:11:49 +0000</pubDate>
</item>
<item>
<title>Problem dot. działania programu seminarium 11</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1088/problem-dot-dzia%C5%82ania-programu-seminarium-11</link>
<description>&lt;p&gt;Witajcie ponownie &lt;img alt=&quot;devil&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/devil_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;devil&quot;&gt;&lt;/p&gt;

&lt;p&gt;Jestem na finiszu kodu na zadanie z seminarium 11 i spotkałem się z dość dziwnym problemem.&lt;/p&gt;

&lt;p&gt;Ponieważ Artur często powtarzał, że trzeba sprawdzać na różne sposoby programy oraz ułatwiać sobie niektóre rzeczy, postanowiłem wygenerować losowe liczby, poprzez funkcję rand() a kolejno posortować je każdą z 5 metod (jedyne czego brakuje, to funkcji sprawdzającej czy jest posortowane).&lt;/p&gt;

&lt;p&gt;Na czym polega problem - kiedy wpiszę dowolną ilość liczb do wygenerowania ( np 41 ) program normalnie liczy czas tylko dla sortowania bąbelkowego oraz quick-sortu a potem pomija scalanie,wybranie i selekcje. Ale żeby było ciekawiej, kiedy wpiszę liczbę 40, działa normalnie wszystko. Co jeszcze lepsze - postanowiłem sprawdzić czy dla różnych potęg liczby 2 ( np 2^17 = 131072 ) działa program -&amp;nbsp; działa.&lt;/p&gt;

&lt;p&gt;Próbowałem zmianę typu zmiennej ze zwekłego int'a na long long int, ale i to nie pomaga.&lt;/p&gt;

&lt;p&gt;Poniżej wklejam kod :&lt;/p&gt;

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

using namespace std;

void numbers_inserting_into_an_array(int *tab1, int *tab2, int *tab3, int *tab4, int *tab5, int amount)
{

    srand(time(NULL));
    for (int i = 0; i &amp;lt; amount; i++)
    {
        tab1[i] = rand () % 1000000 +1 ;
        tab2[i] = tab1[i];
        tab3[i] = tab2[i];
        tab4[i] = tab3[i];
        tab5[i] = tab4[i];
    }
}

void bubble_sorting(int *tab, int amount)
{
    for (int i=1; i &amp;lt; amount; i++)
    {
        for (int j=amount -1; j&amp;gt;= 1; j--)
        {
            int szuflada;
            if (tab[j]&amp;lt;tab[j-1])
            {
                szuflada = tab[j-1];
                tab[j-1]=tab[j];
                tab[j]=szuflada;
            }
        }
    }
}

void quick_sorting(int *tabliczka, int lewy, int prawy)
{
    int i,j,x;
    int v=tabliczka[(lewy+prawy)/2];
    i = lewy;
    j = prawy;
    do
    {
        while (tabliczka [i]&amp;lt;v) i++;
        while (tabliczka [j]&amp;gt;v) j--;
        if (i&amp;lt;=j)
        {
            x=tabliczka[i];
            tabliczka[i]=tabliczka[j];
            tabliczka[j]=x;
            i++;
            j--;
        }
    } while(i&amp;lt;=j);
    if (j&amp;gt;lewy) quick_sorting(tabliczka,lewy,j);
    if(i&amp;lt;prawy) quick_sorting(tabliczka,i,prawy);
}

void merging (int *tablica, int start, int srodek, int koniec)
{
    int *tab_pom = new int[(koniec-start)];
    int i = start, j = srodek+1, k = 0;

    while (i &amp;lt;= srodek &amp;amp;&amp;amp; j &amp;lt;= koniec)
    {
        if (tablica[j] &amp;lt; tablica[i])
        {
            tab_pom[k] = tablica[j];
            j++;
        }
        else
        {
            tab_pom[k] = tablica[i];
            i++;
        }
        k++;
    }

    if (i &amp;lt;= srodek)
    {
        while (i &amp;lt;= srodek)
        {
            tab_pom[k] = tablica[i];
            i++;
            k++;
        }
    }
    else
    {
        while (j &amp;lt;= koniec)
        {
            tab_pom[k] = tablica[j];
            j++;
            k++;
        }
    }

    for (i = 0; i &amp;lt;= koniec-start; i++)
        tablica[start+i] = tab_pom[i];

}

void merge_sort(int *tablica, int start, int koniec)
{
    int srodek;

    if (start != koniec)
    {
        srodek = (start + koniec)/2;
        merge_sort(tablica, start, srodek);
        merge_sort(tablica, srodek+1, koniec);
        merging(tablica, start, srodek, koniec);
    }
}

void insertionsort(int *tablica, int amount)
{
    int i,j,v;
    for (i=1; i&amp;lt;amount; i++)
    {
        j=i;
        v=tablica[i];
        while ((j&amp;gt;0) &amp;amp;&amp;amp; (tablica[j-1] &amp;gt; v))
        {
            tablica[j]=tablica[j-1];
            j--;
        }
        tablica[j]=v;
    }
}

void selection_sort(int *tablica, int ilosc_liczb)
{
    int minimalna, i,j, pomoc;
    for (i = 0; i &amp;lt; ilosc_liczb; i++)
    {
        minimalna = i;
        for (j = i+1; j &amp;lt; ilosc_liczb; j++)
        {
            if (tablica[j] &amp;lt; tablica[minimalna])
                minimalna = j;
        }
        pomoc = tablica[minimalna];
        tablica[minimalna] = tablica[i];
        tablica[i] = pomoc;
    }
}

int main ()
{
    clock_t start, stop;
    int time;
    int amount;
    int *arrray1, *arrray2, *arrray3, *arrray4, *arrray5;
    cout &amp;lt;&amp;lt; &quot;how many numbers to sort?&quot; &amp;lt;&amp;lt; endl;
    cin &amp;gt;&amp;gt; amount;

    arrray1 = new int [amount];
    arrray2 = new int [amount];
    arrray3 = new int [amount];
    arrray4 = new int [amount];
    arrray5 = new int [amount];

    numbers_inserting_into_an_array(arrray1, arrray2,arrray3, arrray4, arrray5, amount);

    start = clock();
    bubble_sorting(arrray1, amount);
    stop = clock ();
    time = (double)(stop - start) / CLOCKS_PER_SEC;

    cout &amp;lt;&amp;lt; &quot;time required to bubble-sort: &quot;&amp;lt;&amp;lt; time &amp;lt;&amp;lt; &quot; s&quot; &amp;lt;&amp;lt; endl;

    start = clock();
    quick_sorting(arrray2, 0, amount -1);
    stop = clock ();
    time = (double) (stop - start) / CLOCKS_PER_SEC;


    cout &amp;lt;&amp;lt; &quot;time required to quick-sort: &quot;&amp;lt;&amp;lt; time &amp;lt;&amp;lt; &quot; s&quot; &amp;lt;&amp;lt; endl;

    start = clock();
    merge_sort(arrray3, 0, amount-1);
    stop = clock ();
    time = ( double) (stop - start) / CLOCKS_PER_SEC;

    cout &amp;lt;&amp;lt; &quot;time required to merge-sort: &quot; &amp;lt;&amp;lt; time &amp;lt;&amp;lt; &quot; s&quot; &amp;lt;&amp;lt; endl;


    start = clock();
    insertionsort(arrray4,amount);
    stop = clock ();
    time = (double) (stop - start) / CLOCKS_PER_SEC;
    cout &amp;lt;&amp;lt; &quot;time required to insertion-sort: &quot; &amp;lt;&amp;lt;  time &amp;lt;&amp;lt; &quot; s&quot; &amp;lt;&amp;lt; endl;


    start = clock();
    selection_sort(arrray5,amount);
    stop = clock ();
    time = (double) (stop - start) / CLOCKS_PER_SEC;
    cout &amp;lt;&amp;lt; &quot;time required to selection-sort: &quot; &amp;lt;&amp;lt;  time &amp;lt;&amp;lt; &quot; s&quot; &amp;lt;&amp;lt; endl;

    delete [] arrray1;
    delete [] arrray2;
    delete [] arrray3;
    delete [] arrray4;
    delete [] arrray5;

    arrray1 = NULL;
    arrray2 = NULL;
    arrray3 = NULL;
    arrray4 = NULL;
    arrray5 = NULL;


    /*
    comparing_every_single_sorting_method();
    */
    return 0;
}
&lt;/pre&gt;

&lt;p&gt;Wiem, że w main'ie jest jeszcze od groma kodu który mogę wyrzucić do kolejnych funkcji x).&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1088/problem-dot-dzia%C5%82ania-programu-seminarium-11</guid>
<pubDate>Wed, 12 Oct 2022 15:38:00 +0000</pubDate>
</item>
<item>
<title>Pytanie dot quicksortu</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1080/pytanie-dot-quicksortu</link>
<description>&lt;p&gt;Witajcie,&lt;/p&gt;

&lt;p&gt;jestem w trakcie seminarium 11, i analizuję przy pomocy debuggera algorytm quicksort. Niestety, ale po godzinnej batalii, nie mogę dojść do tego, dlaczego przy pierwszej iteracji jaką wykonuję,moje &lt;strong&gt;i&lt;/strong&gt; wynosi &lt;strong&gt;2&lt;/strong&gt;, zamiast &lt;strong&gt;1&lt;/strong&gt;, skoro inkrementuję to tylko o 1. W załączniku link do zdjęcia.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://drive.google.com/file/d/1mB2ULIAnb9OPUhrQgXhNxLMEIAQ-XYsp/view?usp=sharing&quot; rel=&quot;nofollow&quot;&gt;https://drive.google.com/file/d/1mB2ULIAnb9OPUhrQgXhNxLMEIAQ-XYsp/view?usp=sharing&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Z góry dzięki za pomoc.&lt;/p&gt;</description>
<category>Algorytmy</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1080/pytanie-dot-quicksortu</guid>
<pubDate>Tue, 11 Oct 2022 15:57:12 +0000</pubDate>
</item>
</channel>
</rss>