Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-10-2011, 11:36   #1
Rootnight
Junior Member
 
Iscritto dal: Oct 2011
Messaggi: 9
creare un programma per la notazione polacca inversa

Salve , l'altro giorno mentre studiavo dal libro "Corso di programmazione completa in C" di Deitel & Deitel , sono giunto agli esercizi del capitolo 12 , e un esercizio che mi chiede di valutare un espressione in notazione polacca inversa (l'esercizio prima chiede di fare un programma che converta un'espressione in notazione infissa in notazione polacca inversa) , ma il problema è che io non riesco a fare il seguente programma , comunque se serve ecco il codice dell'esercizio precedente:

Codice:
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define MAX_STRINGA 30
#define NON_PRESENTE -1
int matr_regole[6][7]={{4,1,1,1,1,1,5},
			{2,2,2,1,1,1,2},
			{2,2,2,1,1,1,2},
			{2,2,2,2,2,1,2},
			{2,2,2,2,2,1,2},
			{5,1,1,1,1,1,3}};
char vett_car[7+1]="%+-*/()";

typedef struct dato_s
{
	char carat;
	struct dato_s *prossimo;
}dato;
typedef enum {FALSE,TRUE} boolean;

dato *stack_pointer,*punt_insert,*punt_extract;
char str[MAX_STRINGA];
int indice,colonna,riga,regola;
boolean finito,corretto;
char carat_stack;

int leggi_str(char stringa[]);
void push(dato **p_stack_pointer, char carattere);
void pop(dato **p_stack_pointer, char *carattere);
void queue(dato **p_insert, dato **p_extract, char carattere);
int cerca_posizione(char carattere);
void guarda_cima_stack(dato *p_stack_pointer, char *carattere);
void stampa(dato *punt);
void inizializza (dato **p_stack_pointer, dato **p_punt_insert, dato **p_punt_extract);

main()
{
	
	while(leggi_str(str)!=EOF)
	{
		inizializza (&stack_pointer,&punt_insert,&punt_extract);
		push(&stack_pointer,str[0]);
		indice=1;
		finito=FALSE;
		while(!finito)
		{
			if((colonna=cerca_posizione(str[indice]))==NON_PRESENTE)
			{
				queue(&punt_insert,&punt_extract,str[indice]);
				indice++;
			}
			else
			{
				guarda_cima_stack(stack_pointer,&carat_stack);
				riga=cerca_posizione(carat_stack);
				regola=matr_regole[riga][colonna];
				switch(regola)
				{
					case 1:
					{
						push(&stack_pointer,str[indice]);
						indice++;
					}
					break;
					case 2:
					{
						pop(&stack_pointer,&carat_stack);
						queue(&punt_insert,&punt_extract,carat_stack);
					}
					break;
					case 3:
					{
						pop(&stack_pointer,&carat_stack);
						indice++;
					}
					break;
					case 4:
					{
						corretto=TRUE;
						finito=TRUE;
					}
					break;
					case 5:
					{
						corretto=FALSE;
						finito=TRUE;
					}
				}
			}
		}
		if(corretto)
			stampa(punt_extract);
		else
			printf("Espressione non correttamente bilanciata\n");
	}
}


void inizializza (dato **p_stack_pointer, dato **p_punt_insert, dato **p_punt_extract)
{
dato *p_aux, *p_prec;

p_aux = *p_stack_pointer;
while (p_aux!=NULL)
	{
	p_prec = p_aux;
	p_aux = (*p_prec).prossimo;
	free (p_prec);
	}
*p_stack_pointer=NULL;
*p_punt_insert=*p_punt_extract=NULL;
}




int leggi_str(char stringa[])
{
	int indice;
	char carat;
	stringa[0]='%';
	indice=1;
 * * * *printf("Introduci l'espressione: ");
	while(((carat=getchar())!='\n')&&(carat!=EOF))
	{
		stringa[indice]=carat;
		indice++;
	}
	stringa[indice]='%';
	stringa[indice+1]='\0';
	return(carat);
}

void push(dato **p_stack_pointer, char carattere)
{
	dato *p_corr;
	p_corr=(dato *)malloc(sizeof(dato));
	(*p_corr).carat=carattere;
	(*p_corr).prossimo=*p_stack_pointer;
	*p_stack_pointer=p_corr;
}

void pop(dato **p_stack_pointer, char *carattere)
{
	*carattere=(**p_stack_pointer).carat;
	*p_stack_pointer=(**p_stack_pointer).prossimo;
}

void queue(dato **p_insert, dato **p_extract, char carattere)
{
	dato *p_corr;
	p_corr=(dato *)malloc(sizeof(dato));
	(*p_corr).carat=carattere;
	(*p_corr).prossimo=NULL;
	if(*p_insert==NULL)
	{
		*p_insert=p_corr;
		*p_extract=p_corr;
	}
	else
	{
		(**p_insert).prossimo=p_corr;
		*p_insert=p_corr;
	}
}

int cerca_posizione(char carattere)
{
	int indice=0;
	while((vett_car[indice]!=carattere)&&(indice<strlen(vett_car)))
		indice++;
	if (indice==strlen(vett_car))
		indice = NON_PRESENTE;
	return(indice);
}

void guarda_cima_stack(dato *p_stack_pointer, char *carattere)
{
	*carattere=(*p_stack_pointer).carat;
}

void stampa(dato *punt)
{
	dato *p_temp;
	p_temp=punt;
	while(p_temp!=NULL)
	{
		putchar((*p_temp).carat);
		p_temp=(*p_temp).prossimo;
	}
	putchar('\n');
}
Grazie mille a tutti.
Rootnight è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
QNAPTS-h966TX, il NAS per chi fa editing...
Il trucco semplicissimo per installare W...
Apple rinvia due novità di iOS 27...
Una memoria ferroelettrica raggiunge 10 ...
Honor Magic 9, Pro Max e Super Edition: ...
24 offerte Amazon da non perdere, dalla ...
Apple starebbe progettando i propri cont...
Niente borsa per OpenAI prima del 2027: ...
Meta potrebbe aver mostrato in anticipo ...
Bicicletta elettrica L26 a 474,05€: e-bi...
NVIDIA RTX PRO 5500 Blackwell: 84 GB di ...
Sei alla ricerca di un buon gruppo di co...
Blizzard annuncia un nuovo StarCraft: la...
Ecobonus al 65%: il governo valuta il ri...
Biscotti fatti con bottiglie di plastica...
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: 12:00.


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