|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
[C] Esercizio Bilanciamento Parentesi
Ho fatto questo esercizio per capire se le parentesi tonde e quadre all'interno di una stringa sono annidate correttamente ma mi da sempre 0 come risultato, il che è sbagliato. Come mai?
Codice HTML:
#include <stdio.h> #include <stdlib.h> #include "funzioni_pile.h" int match(char p1, char p2) { return(p1=='('&& p2==')')||(p1=='['&&p2==']'); } int bilanciamento(char *s) { //PRE LA FUNZIONE PRENDE IN INGRESSO UNA STRINGA s CHE CONTIENE EVENTUALI PARENTESI TONDE E QUADRE //POST LA FUNZIONE RESTITUISCE 1 SE LE PARENTESI CONTENUTE IN s SONO CORRETTAMENTE BILANICATE, 0 ALTRIMENTI pilaPtr P=NULL; char c; char par; while(c=*s++) { if(c=='('||c=='['){ P=Push(P,c);} if(c==')'||c==']') { if(Empty(P)==1||!match(Top(P),c)) { return 0; }else { P=Pop(P); } } } } int main(void) { char *s="[34(25)]"; printf("%d\n", bilanciamento(s)); } |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sei sicuro che l'uso della pila sia corretto ? Non devi fare alcuna malloc all'inizio ?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 381
|
non lo so, negli altri esercizi faccio sempre cosi e funziona, cioè dichiaro la pila con null e poi inserisco gli elementi con la Push e funziona sempre, secondo me è l'algoritmo che è sbagliato. anche perchè mi stampa sempre 0, cioè non da errori, però con l'esempio che ho messo dovrebbe stampare 1 in teoria
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:08.



















