Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 29-09-2005, 13.40.01   #1
Manugal
Hero Member
 
L'avatar di Manugal
 
Registrato: 15-10-2000
Messaggi: 588
Manugal promette bene
[C] Esercizio d'esame..... help, please!!

Ciao a tutti!

Ho un problema con questi esercizi d'esame (che alla fine sono molto simili tra loro quindi se riesco a risolvere il problema con uno, l'ho risolto anche negli altri). Allora vi posto il testo di un esercizio.


Progettare un programma C che legge in preordine
da stdin un albero binario etichettato con stringhe sui nodi
e lo stampa su stdout in inorder.

Questo è l'input che devo dargli (nella prima colonna c'è 1 se esiste il sotto albero sinistro e 0 altrimenti, nella seconda colonna c'è 1 se esiste il sotto albero destro e 0 altrimenti e poi nella terza c'è proprio il valore del nodo)

1 1 asdf
1 0 qwerty
0 0 zxd12
1 1 a723
0 1 tiny
0 0 y67u
1 1 a345
0 0 y5rn[
0 0 zrbu


L'output che devo produrre è della stessa forma dell'input:

0 0 zxd12
1 0 qwerty
1 1 asdf
0 1 tiny
0 0 y67u
1 1 a723
0 0 y5rn[
1 1 a345
0 0 zrbu


Questo è invece il codice che ho scritto:

Codice:
 

#include <stdio.h>

struct node{
       char *string;
       struct node *left;
       struct node *right;
};

typedef struct node NODE;
typedef NODE *TREE;


TREE LeggiAlbero(){
     TREE t=(TREE)malloc(sizeof(NODE));
     int left, right;
     char *data;
     scanf("%d %d %s", &left, &right, data);
     t->string=data;
     if(left)
       t->left=LeggiAlbero();
     if(right)
       t->right=LeggiAlbero();
     return t;
}

void StampaAlbero(TREE t){
     
     if(t==NULL)
        return;
     
     StampaAlbero(t->left);
     printf("%d %d %s", (t->left != NULL), (t->right!=NULL), t->string);
     StampaAlbero(t->right);
}

int main(void){
    TREE a=(TREE)malloc(sizeof(NODE));
    a=LeggiAlbero();
    StampaAlbero(a);
    return 0;
}
Il problema è che quando vado a far partire il programma e gli ridireziono il file di input, non mi stampa niente. Dov'è che ho sbagliato? Grazie.
Manugal non è collegato   Rispondi citando
Vecchio 29-09-2005, 15.33.53   #2
Manugal
Hero Member
 
L'avatar di Manugal
 
Registrato: 15-10-2000
Messaggi: 588
Manugal promette bene
Possibile che nessuno mi sappia aiutare? é importante
Manugal non è collegato   Rispondi citando
Vecchio 29-09-2005, 21.37.58   #3
Manugal
Hero Member
 
L'avatar di Manugal
 
Registrato: 15-10-2000
Messaggi: 588
Manugal promette bene
Finalmente ci sono riuscito......

La funzione ReadTree andava scritta così:

Codice:
TREE ReadTree() {
	TREE t = (TREE)malloc(sizeof(NODE));
	int fHasLeft, fHasRight;
	int nData;
	scanf("%d %d %d", &fHasLeft, &fHasRight, &nData);
	t->nData = nData;
	t->pLeft = NULL;      /* Mancavano queste
        t->pRight = NULL;        due righe */
        if (fHasLeft) {
		t->pLeft = ReadTree();
	}
	if (fHasRight) {
		t->pRight = ReadTree();
	}
	return t;
}
Grazie lo stesso.
Manugal non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[C++] esercizio urgente file binario antony88 Programmazione 0 23-06-2008 21.31.07
[C++] esercizio file binari antony88 Programmazione 8 08-05-2008 18.37.08
Esercizio matematico... handyman Chiacchiere in libertà 33 23-04-2004 23.20.48
Che ve ne pare? E per la tesina d'esame. Lu(a Chiacchiere in libertà 19 24-03-2004 19.41.50
[Java] Esercizio Telefonino Alhazred Programmazione 9 06-03-2004 18.33.02

Orario GMT +2. Ora sono le: 15.28.40.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.