Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL debutta in Italia con il nuovo Tensor G6, lo Zoom Pro fino a 120x, il display Super Actua da 3600 nit e la new entry HiLight riservata ai modelli Pro: lo abbiamo provato in anteprima per diversi giorni prima del lancio commerciale, tra fotocamera generativa, ricarica ancora indietro rispetto ai rivali e un prezzo che parte da 1399 euro
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti
Con un semplice dialogo in linguaggio naturale e la potenza di una scheda video di fascia alta è possibile costruire software funzionante da zero, senza scrivere una riga di codice e senza inviare un solo byte dei propri dati a server esterni
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Samsung rinnova la serie pieghevole di punta con Galaxy Z Fold8 Ultra: pannello interno da 8 pollici quasi senza piega, cerniera Flex Titanium, Snapdragon 8 Elite Gen 5 for Galaxy e batteria finalmente da 5.000 mAh. Prezzo italiano da 2.299 a 2.899 euro. Tra colorimetro, benchmark reali e giorni di uso quotidiano, ecco dove questo pieghevole convince e dove il nome Ultra fatica ancora a trovare piena giustificazione
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-12-2005, 13:02   #1
leomeya
Senior Member
 
Iscritto dal: Sep 2001
Messaggi: 1302
Aiuto errore albero binario C++!please help me

ciao ragazzi devo fare un albero binario di caratteri, ho riciclato un mio vecchio albero che avevo fatto al corso di c++ pero' è di interi.
ho modificato i campi da interi a caratteri pero' c'e' un piccolo problema i dati in ingresso si fermavano dopo il "." ora invece non si ferma piu' come mai?

Funzionamento albero:
per ogni inserimento si deve specificare una tripletta:
-l'informazione da inserire;
-l'informazione 0 o 1 se è a sinistra o a destra;
-l'informazione del nodo padre

per la radice l'inserimento l'inserimento è a sinistra=0 e il nodo padre è 0.
gli inserimenti terminano con il "."

esempio con gli interi:

5 0 0
2 0 5
7 1 5
10 1 2
-10 1 7.
visita in ordine anticipato 5 2 10 7 -10
visita in ordine differito 10 2 -10 7 5
visita in ordine simmetrico 2 10 5 7 -10

5
/ \
2 7
\ \
10 -10

esempio con i caratteri:
a 0 0
b 0 a
c 1 a
d 1 b
e 1 c.
e aspetta ancora un dato perche' non si ferma piu???


vecchio codice con interi

#include <iostream>

using namespace std;

class btree
{public:
enum side{L, R};
private:
struct elem
{ int inf;
elem* l; elem* r;
};
elem* root;
void deltree(elem* p);
bool ins(elem*p, int s, side sd, int finf);
void va(elem* p);
void vd(elem* p);
void vs(elem* p);
btree(const btree&);
btree& operator=(const btree&);

public:
btree();
~btree();
bool insert(int s, side sd, int finf);
void voa();
void vod();
void vos();
};

void btree::deltree(elem* p)
{ if (p!=0)
{ deltree(p->l); deltree(p->r);
delete p;
}
}

bool btree::insert(int s,side sd=L, int finf=0)
{ if (root==0)
{ root=new elem;
root->r=0; root->l=0; root->inf=s;
return true;
}
return ins(root, s, sd, finf);
}

bool btree::ins(elem*p, int s, side sd, int finf)
{ if (p==0) return false;
if (p->inf==finf)
{ switch (sd)
{ case L:
if (p->l==0)
{ p->l=new elem;
p->l->r=0; p->l->l=0;
p->l->inf=s; return true;
}
return false;
case R:
if (p->r==0)
{ p->r=new elem;
p->r->r=0; p->r->l=0;
p->r->inf=s; return true;
}
return false;
}
}
else if (ins(p->l,s,sd,finf)==true)
return true;
else if (ins(p->r,s,sd,finf)==true)
return true;
return false;
}

void btree::va(elem* p)
{ if (p!=0)
{ cout<<p->inf<<" ";
va(p->l);
va(p->r);
}
}

void btree::vd(elem* p)
{ if (p!=0)
{ vd(p->l);
vd(p->r);
cout<<p->inf<<" ";
}
}

void btree::vs(elem* p)
{ if (p!=0)
{ vs(p->l);
cout<<p->inf<<" ";
vs(p->r);
}
}

btree::btree()
{ root=0;}
btree::~btree()
{ deltree(root);}
void btree::voa()
{ va(root);}
void btree::vod()
{ vd(root);}
void btree::vos()
{ vs(root);}

int main()
{
int n1,n2,n3,stop;
char cc;
btree::side ss;
btree tt;
while (cin>>n1)
{ cin>>n2>>n3;
ss=(btree::side) n2;
if (tt.insert(n1,ss,n3))
cout<<"Inserimento effettuato\n";
else cout<<"Informazione "<< n3 << " non esistente \n" << " oppure lato occupato\n";
}
cin.clear(); cin>>cc;
if (cc!='.')
{ cout<<"Errore nei dati di ingresso\n";
return 1;
}
cout<<"Visita in ordine anticipato:\n";
tt.voa(); cout<< '\n';
cout<<"Visita in ordine differito:\n";
tt.vod(); cout<< '\n';
cout<<"Visita in ordine simmetrico:\n";
tt.vos(); cout<< '\n';
cin>>stop;
return 0;
}

--------------------------------------
nuovo codice con caratteri


#include <iostream>

using namespace std;

class btree
{public:
enum side{L, R};
private:
struct elem
{ char inf;
elem* l; elem* r;
};
elem* root;
void deltree(elem* p);
bool ins(elem*p, char s, side sd, char finf);
void va(elem* p);
void vd(elem* p);
void vs(elem* p);
btree(const btree&);
btree& operator=(const btree&);

public:
btree();
~btree();
bool insert(char s, side sd, char finf);
void voa();
void vod();
void vos();
};

void btree::deltree(elem* p)
{ if (p!=0)
{ deltree(p->l); deltree(p->r);
delete p;
}
}

bool btree::insert(char s,side sd=L, char finf=0)
{ if (root==0)
{ root=new elem;
root->r=0; root->l=0; root->inf=s;
return true;
}
return ins(root, s, sd, finf);
}

bool btree::ins(elem*p, char s, side sd, char finf)
{ if (p==0) return false;
if (p->inf==finf)
{ switch (sd)
{ case L:
if (p->l==0)
{ p->l=new elem;
p->l->r=0; p->l->l=0;
p->l->inf=s; return true;
}
return false;
case R:
if (p->r==0)
{ p->r=new elem;
p->r->r=0; p->r->l=0;
p->r->inf=s; return true;
}
return false;
}
}
else if (ins(p->l,s,sd,finf)==true)
return true;
else if (ins(p->r,s,sd,finf)==true)
return true;
return false;
}

void btree::va(elem* p)
{ if (p!=0)
{ cout<<p->inf<<" ";
va(p->l);
va(p->r);
}
}

void btree::vd(elem* p)
{ if (p!=0)
{ vd(p->l);
vd(p->r);
cout<<p->inf<<" ";
}
}

void btree::vs(elem* p)
{ if (p!=0)
{ vs(p->l);
cout<<p->inf<<" ";
vs(p->r);
}
}

btree::btree()
{ root=0;}
btree::~btree()
{ deltree(root);}
void btree::voa()
{ va(root);}
void btree::vod()
{ vd(root);}
void btree::vos()
{ vs(root);}

int main()
{
char n1,n3,stop;
int n2;
char cc;
btree::side ss;
btree tt;
while (cin>>n1)
{ cin>>n2>>n3;
ss=(btree::side) n2;
if (tt.insert(n1,ss,n3))
cout<<"Inserimento effettuato\n";
else cout<<"Informazione "<< n3 << " non esistente \n" << " oppure lato occupato\n";
}
cin.clear(); cin>>cc;
if (cc!='.')
{ cout<<"Errore nei dati di ingresso\n";
return 1;
}
cout<<"Visita in ordine anticipato:\n";
tt.voa(); cout<< '\n';
cout<<"Visita in ordine differito:\n";
tt.vod(); cout<< '\n';
cout<<"Visita in ordine simmetrico:\n";
tt.vos(); cout<< '\n';
cin>>stop;
return 0;
}
leomeya è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2005, 13:04   #2
leomeya
Senior Member
 
Iscritto dal: Sep 2001
Messaggi: 1302
perche' non mi si ferma piu'
sto scapocciando
leomeya è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2005, 15:08   #3
leomeya
Senior Member
 
Iscritto dal: Sep 2001
Messaggi: 1302
up
leomeya è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2005, 15:24   #4
Qu@ker
Member
 
Iscritto dal: Apr 2004
Messaggi: 130
Il punto e' che non riesce a distinguere tra 'a' e '.', mentre prima distingueva tra un intero e '.'.
Prova a scrivere qualcosa tipo:
Codice:
...
while (cin >> n1) {
    if (n1 == '.')
        break;
...
modificando il resto di conseguenza.
Qu@ker è offline   Rispondi citando il messaggio o parte di esso
Old 04-12-2005, 16:21   #5
leomeya
Senior Member
 
Iscritto dal: Sep 2001
Messaggi: 1302
grazie mille
leomeya è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship Google Pixel 11 Pro XL: fotocamera al top, batte...
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
SpaceX potrebbe aver cambiato i piani pe...
Xbox Game Pass, ecco i giochi in arrivo ...
Chery chiude il primo semestre 2026 con ...
Anthropic supera OpenAI nei ricavi a poc...
Un malware Android trafuga i dati anche ...
GrapheneOS accusa Google di aver complic...
Unitree: il robot Superman tocca 12,66 m...
Samsung rincara i wafer fino al 15%, all...
Etched, la startup dei chip per l’infere...
Internet all'estero spendendo meno: i pi...
Mutiny, nuovo film con Jason Statham esc...
GTA 6 vale due anni di ferma: l'Esercito...
Stripe si prende il più grande ro...
Seasonic Prime Enterprise RX-1600: 95% d...
Linux 7.3 abilita i Mac M3 di fascia alt...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v