zadaci
Select messages from
# through # FAQ
[/[Print]\]

Forum@DeGiorgi -> Objektno programiranje (C++)

#1: zadaci Autor/ica: charlotte PostPostano: 13:50 sub, 20. 3. 2010
    —
Pozdrav, rjesavala sam neke zad, ali ne rade kako treba. Pa da li bi mi netko mogao pomoci da ih ispravim?


/* Napisite program koji cita stringove sa standardnog ulaza ubacujuci pritom jedan po jedan vektor,
te nakon unosa EOF(^Z) ispisuje sadrzaj dobivenih vektora.*/

#include <iostream>
#include <vector>
#include<string>
using namespace std;



int main(){

vector<string> text;
string word;
int br=0;

for(br=0;br<100000;br++){

while(cin>>word){
text.push_back(word);

if(text[br] == "EOF(^Z)"){

cout<<"Procitane rijeci:"<<endl;

for(unsigned int i=0; i!=text.size(); ++i)
cout<<text[i]<<'';
cout<<endl;
break;
}
}
}
system("pause");
return 0;
}

Javlja mi ovu gresku:error C2137: empty character constant



/*Napisi fju koja broji koliko se puta u nekoj rijeci pojavljuje par slova ab.
Npr. ab se pojavljuje 2x u rijeci "xabaacbaxabb" */

#include<iostream>
#include<string>
using namespace::std;

int f(string p){
int br1=0,gdje;
string q,m;

q=p;

if(q.size()==0) return br1=0;

gdje=q.find("ab",0);

if(gdje==string::npos) return br1=0;

while(gdje){
br1++;
m=q.substr(gdje,q.size()-gdje);
gdje=m.find("ab",0);
q=m;
if(gdje > q.size()) break;
}

return br1;
}

int main(){

string s1;
int B;

cin>>s1;

B=f(s1);

cout<<B<<endl;

system("pause");
return 0;

}

Uvijek mi ispisuje broj 1.


/* Napisite program koji ucitava i stavlja na kraj liste stringove sve dok se ne ucita
string "kraj". Ispisite sadrzaj dobivene liste pomocu pomocu pop_front() i front()
operacija, te pomocu iteratora.*/

#include<iostream>
#include<string>
#include<list>
using namespace::std;

int main(){

list<string> nova;
list<string>::iterator iter;
string s;

while(cin>>s){
while(s!="kraj")
nova.push_front(s);
}
for(iter=nova.begin();iter<nova.end();iter++)
cout<<*iter<<endl;

}
system("pause");
return 0;
}

Unaprijed hvala![/table]

#2:  Autor/ica: matmihLokacija: {Zg, De , Ri} PostPostano: 14:36 sub, 20. 3. 2010
    —
Evo za prvi zadatak koji sam sad pogledao:

Grešku ti javlja zbog ovog:

Kod:
cout<<text[i]<<'';


Tebi treba ovo:

Kod:
 cout<<text[i]<<" ";

ako si mislila razmak stavit između svaka dva stringa. ' ' Označava znak, a
" " oznacava string. Smile

Nadalje, i uz tu modifikaciju program ti neče radit, zašto:

1. U while petlji ti se nigdje ne mijenja br, dakle do got ti učitavaš riječi while petlja će se izvršavat i br će ti bit 0, što znači da ti je ona provjera u if uzaludna u tom slučaju (osim ako odmah naa početku ne upišeš EOF(^Z). To rješiš tako da povečaš br nakon if-a, a kad to napraviš, for ti više neće trebati...

2. Nisam siguran dali sam dobro skužio zadatak, dali ti trebaš ubacivat riječi u vektor ili moraš imati niz vektora, zadatak ti je malo čudno napisan?
Po tvom kodu ja sam zaključio da trebaš ubacivati rječi u vektor dok ne upišeš EOF(^Z). Smile

#3:  Autor/ica: charlotte PostPostano: 15:42 sub, 20. 3. 2010
    —
Da, jedan je vektor Laughing . Mislis ovako?

#include <iostream>
#include <vector>
#include<string>
using namespace::std;



int main(){

vector<string> text;
string word;


while((cin>>word) &(word!="EOF(^Z)"))
text.push_back(word);

if(text.end()=="EOF(^Z)"){

cout<<"Procitane rijeci:"<<endl;

for(unsigned int i=0; i!=text.size(); ++i)
cout<<text[i]<<" ";
cout<<endl;
}



system("pause");
return 0;
}

Meni ni to ne radi Sad .

#4:  Autor/ica: matmihLokacija: {Zg, De , Ri} PostPostano: 16:39 sub, 20. 3. 2010
    —
Kod:
 #include <iostream>
#include <vector>
#include<string>

using namespace::std;


int main(){

  vector<string> text;
   string word;


       while( (cin>>word) && (word!="EOF(^Z)") )
                         text.push_back(word);



    cout<<"Procitane rijeci:"<<endl;

    for(unsigned int i=0; i!=text.size(); ++i)
                 cout<<text[i]<<" ";
                 cout<<endl;



scanf("%%");

return 0;
}


E sad:
Jesi ti uopće compilirala ovo šta si postala? Smile

Logičko and je &&, a ne & (ovo drugo je and po bitovima...)

text.end(), vrača iterator na kraj vektora, pa ti uspoređuješ iterator i string (tu bi ti se trebao i compiler bunit).

Ali da se i ne buni ovaj if je besmislen zato što stavljaš riječ u vektor samo ako ta riječ nije jednaka "EOF( ^Z)". Wink
Tako da u tvome primjeru se neće vrlo vjerojatno ništa ispisat. Smile

#5:  Autor/ica: charlotte PostPostano: 17:47 sub, 20. 3. 2010
    —
Pa jesam... Zakaj ovo ne radi?

#include <iostream>
#include <vector>
#include<string>
using namespace::std;



int main(){

vector<string> text;
string word;
vector<string>::iterator it;

while(cin>>word){
text.push_back(word);
it=text.end();
if(*it=="EOF(^Z)"){

cout<<"Procitane rijeci:"<<endl;

for(unsigned int i=0; i!=text.size(); ++i)
cout<<text[i]<<" ";
cout<<endl;
break;
}
}


system("pause");
return 0;
}

#6:  Autor/ica: m00nblade PostPostano: 18:15 sub, 20. 3. 2010
    —
Problem ti je u ovome:
Kod:

it=text.end();
if(*it=="EOF(^Z)"){


vector::end() ne vraca iterator na zadnji element u vektoru, nego iterator koji označava kraj vektora i koji se ne smije dereferencirati.

Bilo bi ti bolje da umjesto
Kod:
if (*it == "EOF(^Z)") {

staviš
Kod:
if (word == "EOF(^Z)") {


I jos nesto, EOF(^Z) označava end-of-file znak, koji se na Unixu dobije s Ctrl+D, a na Windowsima s Ctrl+Z Smile

Tako da u kodu možeš staviti:
Kod:

while (cin >> word) {
    text.push_back(word);
}

cout << "Procitane rijeci: " << endl;
for (int i = 0; i < text.size(); ++i) {
    cout << text[i] << " ";
}


I onda kad želiš završiti unos riječi, stisneš Ctrl+Z Smile

#7:  Autor/ica: charlotte PostPostano: 13:47 ned, 21. 3. 2010
    —
Program mi radi i ako dodam it–. Na slican nacin sam ispravila i onaj sa listama Smile .

#include <iostream>
#include <vector>
#include<string>
using namespace::std;



int main(){

vector<string> text;
string word;
vector<string>::iterator it;

while(cin>>word){
text.push_back(word);
it=text.end();
it–;
if(*it=="EOF(^Z)"){

cout<<"Procitane rijeci:"<<endl;

for(unsigned int i=0; i!=text.size(); ++i)
cout<<text[i]<<" ";
cout<<endl;
break;
}
}


system("pause");
return 0;
}

Moze jos mala pomoc oko onog sa stringovima Laughing ? I kako napisati fju koja kao argument prima pokazivac na listi stringova ili listu stringova?
Ovako nesto nejde: void f(listi<string> L) ili void f(list<string>* p)

#8:  Autor/ica: ivo34 PostPostano: 18:36 ned, 21. 3. 2010
    —
charlotte (napisa):
Moze jos mala pomoc oko onog sa stringovima Laughing ?

Malo sam prepravio tvoju funkciju, ovo bi ti trebalo dobro raditi:
Kod:
int f(string p){
   int br1=0,gdje,duljina;
   string q;
   q=p;
   duljina=q.size();
   while (duljina) {
      gdje = q.find("ab",0);
      if(gdje==string::npos)
         break;
      else {
         ++br1;
         q = q.substr(gdje+2,duljina-2);
         duljina = q.size();
         if (gdje== duljina)
            break;
      }
   }
   return br1;
}

Mislim da ok radi, testiraj malo i pitaj ako nije nesto jasno... Smile

#9:  Autor/ica: CobsLokacija: Geto PostPostano: 23:03 ned, 21. 3. 2010
    —
charlotte (napisa):

Ovako nesto nejde: void f(listi<string> L) ili void f(list<string>* p)


nisam isprobavo, al ak nis ne sljaka od ove "obicne" sintakse, probo bi napravit klasu koja sadrzi listu stringova, a zatim ubacit pokazivac na tu klasu kao argument funkcije, pa si dobila skoro istu stvar koju si željela ( inace sam rjesil par tih prvih zadataka pa ak oces posaljem ti na pm )

#10:  Autor/ica: charlotte PostPostano: 13:17 pon, 22. 3. 2010
    —
Moze Very Happy to bi bilo super!

#11:  Autor/ica: bleki88 PostPostano: 16:40 pon, 19. 4. 2010
    —
U ovom zadatku s vjezbi koristili smo pomocnu klasu Broj_zbrajanje,
el mi moze ko objasnit cemu ona sluzi mislim zakaj smo bas to tak radili.
Evo rjesenja zadatka:

Kod:
#include <iostream>
#include <string>

 using namespace std;
 
 [color=red]struct broj_zbrajanje;[/color]
 
 struct broj {
 
   int* znamenke;
   int duljina;
   broj(){}
   broj( const string );
   broj( const broj& );
   broj( [color=red]const broj_zbrajanje& x[/color] ){ *this = x; }
   broj& operator=( [color=red]const broj_zbrajanje&[/color] );
   ~broj();
   friend [color=red]broj_zbrajanje[/color] operator+( const broj&, const broj& );         
       
       
 };
 
[color=red] struct broj_zbrajanje{
 
      const broj& a;
      const broj& b;
      broj_zbrajanje( const broj& a, const broj& b ): a( a ), b( b ) {}       
       
 };[/color]
 
 broj::broj( const string s ){
 
            duljina = s.size();
            znamenke = new int[ duljina ];
           
            for( int i = 0; i < duljina; i++ )
                znamenke[i] = s[i] - '0';     
                         
 }
 
 broj::broj( const broj& x ){
 
            znamenke = new int[ x.duljina ];
            duljina = x.duljina;
            for( int i = 0; i < duljina; i++ )
               znamenke[i] = x.znamenke[i];             
             
 }
 
 broj& broj::operator=([color=red] const broj_zbrajanje& x[/color] ){
 
       if( znamenke ) delete [] znamenke;
       int max = x.a.duljina;
       int a = x.a.duljina - 1,b = x.b.duljina - 1, c = 0;
       if( x.b.duljina > max ) max = x.b.duljina;
       znamenke = new int[ max + 1 ];
       duljina = max + 1;
       for( int i = max; i >= 0; i-- ){
           int suma_a = (a >= 0) ? x.a.znamenke[a] : 0;
           int suma_b = (b >= 0) ? x.b.znamenke[b] : 0;
           a--;b--;
           znamenke[i]=(suma_a+suma_b+c)%10;
           c = (suma_a+suma_b+c)/10;
           
       }
           
             
       
 }
 
 broj_zbrajanje operator+( const broj& x, const broj& y ){
               return [color=red]broj_zbrajanje( x, y )[/color];
     
 }
 
 void ispis( const broj& x ){
 
           if( x.znamenke[0] != 0 )
                cout << x.znamenke[0];
           for( int i = 1; i < x.duljina; i++ )
             
               cout << x.znamenke[i];
               cout << endl;
               
     
 }
 
 broj::~broj(){ if( znamenke ) delete [] znamenke; }
 
 
 
 int main(){
     
  broj a("99999999999999999999999999999");
  broj b("1");
 
  broj c = a + b;

  ispis( c );   
       
     
  system("pause");
  return 0;   
     
 }

#12:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 17:02 pon, 19. 4. 2010
    —
Usporedimo "normalno" zbrajanje i ovakvo sa pomoćnom klasom:

nek imamo naredbu C=A+B;

1. "normalno" zbrajanje
- imali bismo fju oblika
Kod:
broj operator+(const broj& a, const broj& b)

tu bi najprije konstruirali novi veiki broj C, napravili operaciju, i onda to vratili. Pri tom vraćanju se zove copy-konstruktor koji tu privremenu varijablu unutar fje kopira u privremenu van fje, i onda još jedan copy-konstruktor koji tu privremenu kopira u naš C iz maina. Dakle 2 kopiranja bezveze, i 2 destruktora bezveze (za te privremene varijable)

2. pomoću pomoćne klase.
Ideja je napraviti malu klasu, koja će se sama brinuti o zbrajanju, i da to bude bez nepotrebnog kopiranja.
Klasu_zbrajanje napravimo samo tako da čuva dvije reference na brojeve koje treba zbrojiti (reference su mali objekti). Operator + napravimo da vraća klasu_zbrajanje, a onda izraz C=A+B tumačimo kao da velikom broju pridružujemo klasu_zbrajanje (koju vrati +). Dakle, jedini posao koji se tu događe je na operatoru =, i fja
Kod:
broj& operator=( const broj_zbrajanje& x ){

vraća veliki broj, koji je dobiven kao zbroj referenci koje čuva klasa zbrajanje. Jer vraća referencu na broj, nema dodatnog kopiranja.



A imam i ja pitanje, kako napraviti vektor sa pametnim pokazivačem? Jesu li to dvije odvojene klase, dje se provjerava koji operator [] je pozvan, kada sve konstruirati novi objekt?

I ja sam matricu (najjednostavnije mi je bilo) implementirao C-ovski, kao dupli pointer. No, tad nema nekog smisla radit razliku između dijagonalne i obične...

#13:  Autor/ica: bleki88 PostPostano: 17:34 pon, 19. 4. 2010
    —
Jos malo pitanja:

kaj znaci *this=x u onom konstruktoru koji prima broj_zbrajanje

i kaj onda radi operator jednako u npr B=A a A i B su već negdje prije definirani Brojevi

#14:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 17:43 pon, 19. 4. 2010
    —
Taj konstruktor tu uopće ne treba, ne znam zašto je stavljen...

a operator= se može preopteretiti baš kao i bilo koji drugi operator. Pa kada prima obični broj, da napravi pridruživanje na kakvo smo navikli, kad prima klasu_zbrajanje, da napravi zbrajanje itd.

A u ovom tvom primjeru sa A i B bi operator= na naredbi A=B napraviti:
1. obrisat kaj je prije bilo u A.
2. alocirat memoriju da stane sve iz B
3. kopirat sve iz B na tu novo alociranu memoriju

- kod A=A se ništa ne bi trebalo desit, to provjeri na početku inače ak napraviš dealokaciju sve gubiš

#15:  Autor/ica: bleki88 PostPostano: 17:46 pon, 19. 4. 2010
    —
e super, puno jasnije, fala

#16:  Autor/ica: matmihLokacija: {Zg, De , Ri} PostPostano: 19:26 pon, 19. 4. 2010
    —
Luuka (napisa):

A imam i ja pitanje, kako napraviti vektor sa pametnim pokazivačem? Jesu li to dvije odvojene klase, dje se provjerava koji operator [] je pozvan, kada sve konstruirati novi objekt?

I ja sam matricu (najjednostavnije mi je bilo) implementirao C-ovski, kao dupli pointer. No, tad nema nekog smisla radit razliku između dijagonalne i obične...


Generalno je smart pointer parametrizirana klasa koja se brine za dealokaciju objekta na koji pokazuje. Ostalo će trebat odgovorit netko tko rješava zadaću.

Glede matrice, ima dosta smisla raditi posebnu klasu za dijagonalne matrice, zato šta ti je u tom slučaju dosta zapamtit samo elemente na dijagonali u jedno polje i možeš rekonstruirat cijelu matricu, a memorijska potrošnja je znatno smanjena.
Generalno (kolko ja znam) se u C++ matrice spremaju u polje, a onda je lako indekse izvuči iz njega. Smile

Naravno kod mješovitih operacija tipa zbrajanje između dijagonalne i full matrice rezultat će biti full matrica, s druge strane Hadamardov produkt će proizvesti dijagonalnu matricu... Smile

#17:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 19:42 pon, 19. 4. 2010
    —
Ma jasno da ima smisla radit dijagonalnu, ali ako implementuram kao dupli pointer, onda moram skroz razdvojit te dvije strukture, a na to se ne cilja, bar mislim da ne... a i ovako kak radim se compiler buni na sve i svašta, makar i najjednostavnije A[i][j]+B[i][j]... jel ima neka dobra duša da ukratko opiše pametne pointere u ovom slučaju i kako same strukture izgledaju, gdje ide koja provjera i slično?

#18: Zašto mi ovaj kod ne radi? klasa vektor. Autor/ica: jelenko* PostPostano: 19:07 uto, 20. 4. 2010
    —
Radi se o klasi vektor koja bi se trebala ponašati kao pametni pokazivač, dakle ima nekakvo brojanje referenci itd, itd.... većina toga mi je proradila, sve super, ali zanima me zašto mi funkcionira doljnji kod. Kopirao sam samo dio koji mislim da je bitan.

Zašto mi ne radi ova funkcionalnost kakvu želim postići u mainu?
Želim moći konstruirati objekt tipa vektor iz proizvoljnog polja brojeva.

Što moram promijeniti u klasi da bi mi to proradilo?


#include <vector>
using namespace std;

template<typename TIP>
class vektor
{
public:
typedef unsigned int index;

struct vektorRep
{
int m_refCount;
index _size;
TIP* _data;

template <typename T, index N>
vektorRep( index N, T* r )
:m_refCount(1), _size(N), _data( new TIP[N])
{
for(index i=0; i<_size; ++i) *(_data+i) = *(r+i);
}
};

private:
vektorRep* rep;

public:

template<typename T, index N>
vektor(T (&p)[N]) : rep(new vektorRep( N, p) ) { }


};

void main()
{
double p3[]={1,2,3,4,5};
vektor<double> v4(p3);

system("pause");
}

#19:  Autor/ica: bleki88 PostPostano: 18:24 čet, 13. 5. 2010
    —
se tko sjeca na vjezbama kako smo promijenili naslov prozora iz edit controla

#20:  Autor/ica: frances PostPostano: 17:48 sri, 19. 5. 2010
    —
da ne otvaram novu temu. dosli rezultati kolokvija klik

#21:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 15:08 čet, 17. 6. 2010
    —
Ako ima netko onaj primjer s vježbi gdje smo mijenjali dostupnost i vidljivost gumba molio bih da mi pošalje na mail ili privatnom porukom... a može i ovdje stavit kod.... hvala

#22:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 17:57 pet, 18. 6. 2010
    —
I molio bih ako netko ima onaj primjer sa otvaranjem još jednog dijaloga (npr klikom na neki gumb), po mogućnosti sa ponešto uputa... hvala Very Happy

#23:  Autor/ica: lajkaLokacija: Zagreb PostPostano: 19:36 pet, 18. 6. 2010
    —
Evo ovako sam ja napravila da se otvara novi dialog iz menija:

prvo u klasi Prozor deklariram fju

class Prozor :public CFrameWnd {
CMenu menu1;
public:
Prozor () {
CString poruka = "Prozor";
Create(NULL,poruka);

menu1.LoadMenu(IDR_MENU1);
SetMenu(&menu1);

(...)

void OnFileIzvedba2();

(...)
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP( Prozor, CFrameWnd)
(...)
ON_COMMAND(ID_ZADATAK2_IZVEDBA,OnFileIzvedba2)
(...)
END_MESSAGE_MAP()

void Prozor::OnFileIzvedba2(){
newdialog1 dlg;
dlg.DoModal();
}

i u ovoj zadnjoj funkciji se otvori taj novi dialog. Ako triba jos stogod dodatno pojasnit samo reci Smile

// imam ti rjeseno i ono s dostupnosti i vidljivosti, al ne s vjezbi nego moje rjesenje, pa ako ti jos triba mogu ti poslat.

#24:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 21:36 pet, 18. 6. 2010
    —
Ovo će odmah po startanju otvorit 2 dijaloga, jel? Ja bih ono da kad kliknem na neki gumb da se otvori novi dijalog kojeg ja prethodno uredim...

I ajde please stavi i to sa dostupnošću/vidljivošću... i to na način da se koristi ko na vježbama... ako se jednom klikne na neki gumb da se nešto prikaže, kad se opet klikne da se sakrije... u principu provjera da li je nešto vidljivo ili nije...

#25:  Autor/ica: lajkaLokacija: Zagreb PostPostano: 22:00 pet, 18. 6. 2010
    —
Luuka (napisa):
Ovo će odmah po startanju otvorit 2 dijaloga, jel? Ja bih ono da kad kliknem na neki gumb da se otvori novi dijalog kojeg ja prethodno uredim...

I ajde please stavi i to sa dostupnošću/vidljivošću... i to na način da se koristi ko na vježbama... ako se jednom klikne na neki gumb da se nešto prikaže, kad se opet klikne da se sakrije... u principu provjera da li je nešto vidljivo ili nije...


nece odmah otvoriti, nego tek kada kliknes na taj dio menija s ID-jem ko gore u kodu.. islo bi slicno kada bi se otvarao novi dijalog klikom na botun, samo sto bi onda trebao staviti na odgovarajuce mjesto ID od botuna, a ne od tog iz menija, kao sto sam ja stavila... (i prepraviti poruke za hendlanje toga, jasno)
To newdialog1 je tip dijaloga koja sam ja kreirala sa strane i onda kada napises newdialog1 dlg, deklariras taj dialog, i s naredbom dlg.DoModal() ce se on i kreirati (a kreirati ce se tek kada se klikne na odgovarajuce misto)..da sam tila da mi se otvori odma kada se pokrene program, onda bi napisala taj dio koda za kreiranje dialoga u konstruktoru klase Prozor ili tako nesto.. )

evo u prilogu rjeseno to za pozivanje dialoga klikom na botun ili iz menija, te rjesenje tog s dostupnosti/vidljivosti, i ono s vremenom i promjenom naslova dialoga.. to sam sve rjesavala na istom mistu pa zato Very Happy ako sto nevalja, vici! Smile



zadatkic.rar
 Description:

Download
 Filename:  zadatkic.rar
 Filesize:  199.16 KB
 Downloaded:  196 Time(s)


#26:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 22:07 pet, 18. 6. 2010
    —
Puno hvala, plusek si već dobila Very Happy

A to si prokužila iz nekih materijala koje si našla na netu ili?

#27:  Autor/ica: lajkaLokacija: Zagreb PostPostano: 22:18 pet, 18. 6. 2010
    —
Luuka (napisa):
Puno hvala, plusek si već dobila Very Happy

A to si prokužila iz nekih materijala koje si našla na netu ili?


Ispocetka sam samo puno surfala, al sam onda naisla na ovu stranicu:

http://www.codersource.net/mfc/mfc-tutorials.aspx

Smile

Nekako mi je tamo bas sve pregledno i lipo objasnjeno i stvarno dobro dodje uz one slajdove s vjezbi.. Smile

p.s nemas se sta zahvaljivat, drago mi je da mogu pomoc Smile

#28:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 23:51 pet, 18. 6. 2010
    —
Još malo pitanja Very Happy

Kako se napravi ona komunikacija između 2 dijaloga? Iz "glavnog" dijaloga želim "malom" dijalogu poslat neki string, tamo nešto s njim napravit i onda promijenjenog vratit nazad... da li se doda neka varijabla na sami dijalog pa u konstruktoru tog dijaloga postavimo tu varijablu na onu koju šaljemo? Tako nešto bi mi bilo logično, ali...


I jel ima netko ideju za sortiranje? Meni jedino pada na pamet sve osobe spremit u neko polje struktura, pa to polje sortirat, izbrisat sve iz liste i upisat ovo sortirano, no to mi se čini neoptimalno Very Happy

#29:  Autor/ica: CobsLokacija: Geto PostPostano: 11:53 sub, 19. 6. 2010
    —
ja se nisam baš brinuo za optimizaciju neg sam sam sklepo program da radi...

kak ovo da glavni dijalog šalje poddijalogu podatke...
pa lagano kolko sam ja to sve shvatio...
glavni će pozvati malog u nekoj funkciji sam...

Kod:

 ...
 Poddijalog mali;
 mali.DoModal();
 


sad si u malom dijalogu napravi neke dodatne varijable pa sam pridružuj ove iz glavnog malom... kad se pozove funkcija DoModal() tebi će se otvoriti mali dijalog, ali on neće apsolutno ništa napraviti dok ti ne klikneš OK u malom dijalogu... ( il bilo koju funkciju koja ti poziva funkciju UpdateData() ) , tak da u biti mali ništa ne radi dok ne klikneš na njega...

pretpostavljam da to pokušavaš napravit kod uređivanja neke karakteristike, pa da ti napiše po defaultu u edit kontrolu staro ime... no ja se nisam s tim htio zamarat previše... pa nisam takve stvari stavljo.

S obzrom da sam sve napravil što se tiče onog funkcijskog djela programa mene zanima onaj zadnji detalj, kak spremat podatke i kak ih učitat... ak može neko primjer napisati... ( jel to ide preko nekih .txt datoteka ili ima neki laši način )

i ovo sa vidljivosti i nevidljivosti:

ak nemaš pridodanu kontrolnu varijablu gumbu onda ovak:

Kod:

 GetDlgItem( ID_GUMB )->EnableWindow( TRUE ili FALSE );
 GetDlgItem( ID_GUMB )->ShowWindow( TRUE ili FALSE );
 


ak imaš pridodan kontrolnu varijablu gumbu ili ak si sve gumbe sam radio ( kontrolna varijabla CButton gumb )

onda sam:

Kod:

 gumb.EnableWindow( ... );
 gumb.ShowWindow( ... ); 
 

#30:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 12:11 sub, 19. 6. 2010
    —
Cobs (napisa):

pretpostavljam da to pokušavaš napravit kod uređivanja neke karakteristike, pa da ti napiše po defaultu u edit kontrolu staro ime... no ja se nisam s tim htio zamarat previše... pa nisam takve stvari stavljo.

S obzrom da sam sve napravil što se tiče onog funkcijskog djela programa mene zanima onaj zadnji detalj, kak spremat podatke i kak ih učitat... ak može neko primjer napisati... ( jel to ide preko nekih .txt datoteka ili ima neki laši način )


Tnx za ovo sa malim dijalogom, to se da fino napravit. I da, točno ovo kaj si napiso želim napravit Very Happy Taj drugi dijalog da se otvori kad kliknem na gumb mijenjanje i da se u njegove edit kontrole napišu vrijednosti od seletirane stavke. Pa kad se promijeni da se ta stavka i promijeni u listi.

A što se tiče spremanja, ja sam to onak po starom Very Happy Includo fstream, pa otvorio datoteku u OnInitDialog, prepisao iz nje u listu kaj treba, i kasnije kod izlaza spremanje prepiso sve iz liste u datoteku.

E al imam jedan problem tu, pretpostavljam baš zbog datoteka... svaki puta kad idem pokrenuti program kaže mi da je Out of date i trebam ga buildat opet iako ne radim nikakve promjene. Datoteke su uredno zatvorene...

#31:  Autor/ica: CobsLokacija: Geto PostPostano: 12:32 sub, 19. 6. 2010
    —
Luuka (napisa):

A što se tiče spremanja, ja sam to onak po starom Very Happy Includo fstream, pa otvorio datoteku u OnInitDialog, prepisao iz nje u listu kaj treba, i kasnije kod izlaza spremanje prepiso sve iz liste u datoteku.

E al imam jedan problem tu, pretpostavljam baš zbog datoteka... svaki puta kad idem pokrenuti program kaže mi da je Out of date i trebam ga buildat opet iako ne radim nikakve promjene. Datoteke su uredno zatvorene...


ma da sad sam i ja tak počel, sam kaj nisam još nikad se bakčo s tim fstreamovima pa idem to tek naučit...

a ovo za out of date mi se ionak pojavi apsolutno svaki put kad neš promijenim na programu pa me to ni ne brine previše, a sve kaj radi je ide ispočetka nekaj linkat kompajlirat tak da nema neke štete...

#32:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 12:51 sub, 19. 6. 2010
    —
Ma da, ali se sad meni javlja i kad niš ne promijenim... to mi je čudno... Confused Confused I ne da ga otvorit direktno na .exe (koji se nalazi u debug mapi)... u task manageru se pojavi, uzme nešto resursa procesora ali ništa se ne otvara...

a ovo sam uspio sa mijenjanjem Very Happy

#33:  Autor/ica: lajkaLokacija: Zagreb PostPostano: 13:58 sub, 19. 6. 2010
    —
Luuka (napisa):
Još malo pitanja Very Happy

I jel ima netko ideju za sortiranje? Meni jedino pada na pamet sve osobe spremit u neko polje struktura, pa to polje sortirat, izbrisat sve iz liste i upisat ovo sortirano, no to mi se čini neoptimalno Very Happy


Takvu ideju sam i ja imala, dok nisam vidila na ovoj: http://www.functionx.com/visualc/controls/listbox.htm
stranici nesto da se moze dodavat elemente na tocno odredjeno misto u listi, pa mislim nesto pomoc tog izvest..ali jos nisam krenila s tim pa neznam kolike koristi od svega toga... cisto bacam ideje Smile

//ups sada shvacam da bi ovo bilo od koristi da lista mora odma bit sortirana, zaboravih da se sortira klikom na nesto Very Happy

#34:  Autor/ica: LuukaLokacija: Hakuna Matata PostPostano: 14:20 sub, 19. 6. 2010
    —
Lista će biti automatski sortirana po imenima ako to ne isključiš u propetisima liste... ja sam isključio pa fino sve dodaje na kraj i sortira kad ja to želim Very Happy A mora se nešto kemijat svakako kad želiš po prezimenima, jer trebaš iščupat dio stringa iz sredine... ja sam napravio kak sam gore napiso i stvar radi.



Forum@DeGiorgi -> Objektno programiranje (C++)


output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.

Stranica 1 / 1.

Powered by phpBB © 2001,2002 phpBB Group
Theme created by Vjacheslav Trushkin