<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem obiektowo</title>
<link>https://forum.pasja-informatyki.pl/tag/obiektowo</link>
<description>Powered by Question2Answer</description>
<item>
<title>C++ obiektowo, odległość między punktami</title>
<link>https://forum.pasja-informatyki.pl/558673/c-obiektowo-odleglosc-miedzy-punktami</link>
<description>

&lt;p&gt;Zaczęłam pisać to zadanie i utknęłam. Jak mam teraz skorzystać z tych współrzędnych, żeby je wstawić do wzoru?&lt;/p&gt;



&lt;p&gt;Nie obiektowo&amp;nbsp;napisałabym po prostu zmienne x1,x2,y1,y2, ale tutaj chyba chodzi, żeby użyć jakoś optymalnie klasy...&lt;/p&gt;



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

/*Napisz program, który zdefiniuje typ złożony Point reprezentujący punkt w dwuwymiarowej przestrzeni euklidesowej. Punkt powinien być opisany za pomocą dwóch współrzędnych. 
Zdefiniuj metody do wczytywania i wypisywania współrzędnych. Zadeklaruj wszystkie pola klasy jako prywatne. Następnie wczytaj od użytkownika współrzędne dwóch punktów.
Oblicz i wyświetl odległość pomiędzy tymi punktami.*/

class Point{
private:
	int x;
	int y;
public:
void dodaj_wspolrzedne_x() {
		
		cout &amp;lt;&amp;lt; &quot;x=&quot;;
	cin &amp;gt;&amp;gt; x;
	}

void dodaj_wspolrzedne_y() {
	cout &amp;lt;&amp;lt; &quot;y=&quot;;
	cin &amp;gt;&amp;gt; y;
}

void wyswietl() {
	cout &amp;lt;&amp;lt; &quot;(&quot; &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &quot;,&quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &quot;)&quot;;
}
};


int main() {
	Point punkt_1;
	cout &amp;lt;&amp;lt; &quot;Podaj wspolrzedne punktu 1: &quot; &amp;lt;&amp;lt; endl;
	punkt_1.dodaj_wspolrzedne_x();
	punkt_1.dodaj_wspolrzedne_y();
	punkt_1.wyswietl();
	cout &amp;lt;&amp;lt; &quot;\nPodaj wspolrzedne punktu 2: &quot; &amp;lt;&amp;lt; endl;
	Point punkt_2;
	punkt_2.dodaj_wspolrzedne_x();
	punkt_2.dodaj_wspolrzedne_y();
	punkt_2.wyswietl();
}&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/558673/c-obiektowo-odleglosc-miedzy-punktami</guid>
<pubDate>Mon, 10 Jan 2022 19:49:23 +0000</pubDate>
</item>
<item>
<title>PESEL - obiektowo</title>
<link>https://forum.pasja-informatyki.pl/320467/pesel-obiektowo</link>
<description>

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

using namespace std;

int main()
{
    int ile_prob;
    cin&amp;gt;&amp;gt;ile_prob;
    long long int *tab_p;
    tab_p=new long long int [ile_prob];
        for (int j=0; j&amp;lt;ile_prob; j++)
        {
            cin&amp;gt;&amp;gt;tab_p[j];
        }
    int **tab;
    tab=new int*[ile_prob];
    for (int j=0;j&amp;lt;ile_prob;j++)
    {
        tab[j]=new int [12];
        for (int i=10; i&amp;gt;=0; i--)
        {
            tab[j][i]=tab_p[j]%10;
            tab_p[j]=(tab_p[j]-tab[j][i])/10;
        }
        tab[j][11]=(tab[j][0]+tab[j][1]*3+tab[j][2]*7+tab[j][3]*9+tab[j][4]+tab[j][5]*3+tab[j][6]*7+tab[j][7]*9+tab[j][8]+tab[j][9]*3+tab[j][10]);//%10;
    }
    for (int j=0; j&amp;lt;ile_prob; j++)
    {
        if (tab[j][11]&amp;gt;0)
        {
            if (tab[j][11]%10==0)
                cout&amp;lt;&amp;lt;&quot;D&quot;&amp;lt;&amp;lt;endl;
                else
                cout&amp;lt;&amp;lt;&quot;N&quot;&amp;lt;&amp;lt;endl;
        }
        else
        {
        cout&amp;lt;&amp;lt;&quot;N&quot;&amp;lt;&amp;lt;endl;
        }
    }
    return 0;
}
&lt;/pre&gt;



&lt;p&gt;napisałem kod rozwiązujący zadanie &quot;PESEL&quot; z platformy SPOJ. Kod w pierwszej kolejności wczytuje pesele dla wszystkich prób, a następnie zwraca ich ocenę. Na przykładzie tego zadania chciałbym proszę o wyjaśnienie programowania obiektowego. Czytałem o tym, ale nie potrafię zastosować tego podejścia w swoich programach (jestem początkujący - i to pewnie dlatego).&amp;nbsp;&lt;/p&gt;



&lt;p&gt;P.S. wszystkie zadania SPOJ interpretuję dokłądnie z opisem i program najpierw przechowuje&amp;nbsp;dane, a następnie po kolei&amp;nbsp;generuje wyniki. Przechowywanie danych wykonuję poprzez dynamiczne deklarowanie tablic jedno lub dwuwymiarowych, ale z treści komentarzy i zamieszczonych rozwiązań wynika, że takie podejście nie jest wymagane przez &quot;sędziego&quot; SPOJ-a. Dziękuję za czas poświecony przy udzielaniu odpowiedzi.&lt;/p&gt;</description>
<category>SPOJ</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/320467/pesel-obiektowo</guid>
<pubDate>Sun, 21 Jan 2018 23:07:02 +0000</pubDate>
</item>
<item>
<title>Optymalizacja timera.</title>
<link>https://forum.pasja-informatyki.pl/222741/optymalizacja-timera</link>
<description>

&lt;p&gt;Cześć,
&lt;br&gt;

&lt;br&gt;
mam pytanie co do zadania domowego. Zrobiłem już cały program, zapisuje on licznik do pliku przy zamykaniu pliku krzyżykiem, uruchamia się przy autostarcie itd. Nie wiem jednak jak dodać opcję by zapisywał on czas do pliku przy zamykaniu systemu. Tj. klikam zamknij program - wszystko w porządku zapisuje się tak jak chce. Jednak jeśli wyłączę komputer, nie wyłączając aplikacji to ona tego timera nie zapisze, przez co jest tak na prawdę bezużyteczna.
&lt;br&gt;

&lt;br&gt;

&lt;br&gt;
Wyczytałem, że windows wysyła coś takiego jak WM_QUERYENDSESSION przy zamykaniu systemu i podobno to jakoś można wykorzystać do opóźnienia zamykania na tyle by zapisać dane, jednak totalnie nie rozumiem jak można tego użyć. Byłbym wdzięczny za porady.&lt;/p&gt;



&lt;p&gt;EDIT:
&lt;br&gt;
{&lt;/p&gt;



&lt;p&gt;Problem rozwiązałem w inny sposób: program zapisuje czas co sekundę do pliku, przez co cały czas jest aktualny nie ważne czy się wyłączy program czy nie. Jednak takie podejście wydaje mi się marnotrawieniem zasobów ( może przesadzam?).&lt;/p&gt;



&lt;p&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Procesor&amp;nbsp; /&amp;nbsp; Pamięć&amp;nbsp;&amp;nbsp; /&amp;nbsp; Dysk&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sieć&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=9902365106043996862&quot; style=&quot;height:25px; width:501px&quot;&gt;&lt;/p&gt;



&lt;p&gt;Pokazuje mi takie zużycie. Wydaję mi się, że do przeżycia. Jeśli ktoś ma lepsze rozwiązanie to chętnie posłucham, dzięki :).&lt;/p&gt;



&lt;p&gt;
&lt;br&gt;
Ps. Moje dodawanie do Austostart-u też jest kulawe, bo nie mogę odkryć jak pobrać ścieżkę do folderu Autostart użytkownika (bo ścieżka ma w sobie nazwę użytkownika, więc na każdym komputerze jest inna). U mnie to jest rozwiązane komunikatem by użytkownik sam sobie wrzucił skrót do folderu który powinien być tu i tu, ale to prowizorka.&lt;/p&gt;



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



&lt;p&gt;Kod (wersja zapisująca się co sekundę):&lt;/p&gt;



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

#include &amp;lt;vcl.h&amp;gt;
#pragma hdrstop

#include &quot;PcTimer.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link &quot;trayicon&quot;
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;

const  SELDIRHELP = 1000;
String Dir = &quot;&quot;;
int sec=0,h,m,s;
int h1,h2,m1,m2,s1,s2;
int flag_open=1;
AnsiString exeFile=Application-&amp;gt;ExeName;
AnsiString exePath=ExtractFilePath(exeFile);
AnsiString hours1,minutes1,seconds1;
AnsiString fileHours1,fileHours2,fileMinutes1,fileMinutes2,fileSeconds1,fileSeconds2;
AnsiString timeFromFile;


//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        Directory = new TStringList;
        start_time = new TStringList;

}
//---------------------------------------------------------------------------


void __fastcall TForm1::TrayIcon1Click(TObject *Sender)
{
        Show();
        Application-&amp;gt;BringToFront();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{



        sec++;
        h=sec/3600;
        m=(sec-h*3600)/60;
        s= sec-h*3600-m*60;

        hours1=CurrToStr(h);
        minutes1=CurrToStr(m);
        seconds1=CurrToStr(s);
        if(h&amp;lt;10)
                hours1=&quot;0&quot;+hours1;
        if(m&amp;lt;10)
                minutes1=&quot;0&quot;+minutes1;
        if(s&amp;lt;10)
                seconds1=&quot;0&quot;+seconds1;
        if(s==0)
                seconds1=&quot;00&quot;;
        Time-&amp;gt;Caption=hours1+&quot;:&quot;+minutes1+&quot;:&quot;+seconds1;
        start_time-&amp;gt;Clear();
        start_time-&amp;gt;Add(Time-&amp;gt;Caption);
        start_time-&amp;gt;SaveToFile(SaveDialog1-&amp;gt;FileName);
}
//---------------------------------------------------------------------------




void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &amp;amp;Action)
{



    if(Application-&amp;gt;MessageBox(
    &quot;Are you sure, do you want to exit?&quot;,&quot;Confirm&quot;,MB_YESNO  | MB_ICONQUESTION)==IDYES )
    {
             Application-&amp;gt;Terminate();
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

        SelectDirectory(Dir, TSelectDirOpts() &amp;lt;&amp;lt; sdAllowCreate &amp;lt;&amp;lt; sdPerformCreate &amp;lt;&amp;lt; sdPrompt,SELDIRHELP);
        Directory-&amp;gt;Clear();
        Directory-&amp;gt;Add(Dir);
        AnsiString exePathCopy;
        exePathCopy=exePath+&quot;\Dir.txt&quot;;
        Directory-&amp;gt;SaveToFile(exePathCopy);
}
//---------------------------------------------------------------------------



void __fastcall TForm1::FormCreate(TObject *Sender)
{

        AnsiString NameOfFile;

        try
        {
                Form1-&amp;gt;Directory-&amp;gt;LoadFromFile(exePath+&quot;\Dir.txt&quot;);
                if (Directory-&amp;gt;Count &amp;gt;= 0)
                        Dir=Directory-&amp;gt;Strings[0];
        }
        catch(...)
        {
        }

        if(Dir==&quot;&quot;)
       {
        Application-&amp;gt;MessageBox(&quot;You have to enter directory where timer will save!&quot;,&quot;Info&quot;,ID_OK);
        Form1-&amp;gt;Button1Click(Sender);
      }

      NameOfFile=Date();
      NameOfFile=NameOfFile+&quot;.txt&quot;;
      NameOfFile=Dir+&quot;\\&quot;+NameOfFile;
      SaveDialog1-&amp;gt;FileName=NameOfFile;


        if (FileExists(SaveDialog1-&amp;gt;FileName))
        {
                try
                {
                        start_time-&amp;gt;LoadFromFile(SaveDialog1-&amp;gt;FileName);
                        if (start_time-&amp;gt;Count &amp;gt;= 0)
                                timeFromFile=start_time-&amp;gt;Strings[0];
                }
                catch(...)
                {
                }
                start_time-&amp;gt;LoadFromFile(SaveDialog1-&amp;gt;FileName);
                fileHours1=timeFromFile.SubString(0, 1);
                fileHours2=timeFromFile.SubString(1, 1);
                fileMinutes1=timeFromFile.SubString(4, 1);
                fileMinutes2=timeFromFile.SubString(5, 1);
                fileSeconds1=timeFromFile.SubString(7, 1);
                fileSeconds2=timeFromFile.SubString(8, 1);

                h1 = fileHours1.ToInt();
                h2 = fileHours2.ToInt();
                m1 = fileMinutes1.ToInt();
                m2 = fileMinutes2.ToInt();
                s1 = fileSeconds1.ToInt();
                s2 = fileSeconds2.ToInt();

                while(h1&amp;gt;0)
                {
                        h1--;
                        h2+=10;
                }
                h=h2;

                while(m1&amp;gt;0)
                {
                        m1--;
                        m2+=10;
                }
                m=m2;

                while(s1&amp;gt;0)
                {
                        s1--;
                        s2+=10;
                }
                s=s2;

                s+=h*3600;
                s+=m*60;
                sec=s;
        }

}
//---------------------------------------------------------------------------
&lt;/pre&gt;



&lt;p&gt;
&lt;br&gt;

&lt;br&gt;
Pozdrawiam
&lt;br&gt;

&lt;br&gt;
Jakobosik&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/222741/optymalizacja-timera</guid>
<pubDate>Thu, 02 Feb 2017 11:54:54 +0000</pubDate>
</item>
<item>
<title>Zapisywanie do pliku na obiektówce</title>
<link>https://forum.pasja-informatyki.pl/121502/zapisywanie-do-pliku-na-obiektowce</link>
<description>

&lt;p&gt;Witam, mam problem, otóż chciałem zapisywać do pliku czas, wszystko się kompiluje ale program i tak nie reaguje (tzn. absolutnie nic nie zmienia w txt, sam timer działa). Dodam, że jak zmienię adres przy&lt;strong&gt; czas.open&lt;/strong&gt; to i tak nie tworzy się żaden plik&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
string zp; // pomocniczy string do konwertowania czasu z pliku
fstream czas;
int godzin,minut,sekund ;
czas.open(&quot;czas.txt&quot;, ios::in);
czas.open(&quot;czas.txt&quot;, ios::out);

AnsiString godz,min,sek;
if (czas.good()==true){
getline(czas, zp);
s=atoi(zp.c_str());
}
     s++;
     godzin = s/3600 ;
     godz = IntToStr(godzin);
     if (godzin&amp;lt;10) godz= &quot;0&quot;+godz;

     minut = (s- godzin*3600)/60;
     min = IntToStr(minut) ;
     if (minut&amp;lt;10) min= &quot;0&quot;+min;

     sekund = s-godzin*3600-minut*60;
     sek = IntToStr(sekund);
     if (sekund&amp;lt;10) sek= &quot;0&quot;+sek;
  czas&amp;lt;&amp;lt;s&amp;lt;&amp;lt;endl;
      Label1 -&amp;gt;Caption = godz +&quot;:&quot;+min+&quot;:&quot;+sek;
      czas.close();

}&lt;/pre&gt;



&lt;p&gt;trochę kombinowałem więc zapewne idzie znaleźć tutaj wiele niepotrzebnych udziwnień (droga na około itp...) jednak jeśli ktoś się orientuje w sprawie to bym był wdzięczny za wskazanie rozwiązania problemu+&lt;/p&gt;



&lt;p&gt;+ drugie pytanie, do jednoczesnego zapisu i odczytu pliku mogę to jakoś połączyć w jednej komendzie czas.open(&quot;adres&quot;, ios::in, ios::out)? Bo właśnie gdy tak robię to wywala błąd&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/121502/zapisywanie-do-pliku-na-obiektowce</guid>
<pubDate>Thu, 24 Mar 2016 19:19:05 +0000</pubDate>
</item>
</channel>
</rss>