Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
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


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Roscosmos: static fire per i propulsori ...
Alcune partite NBA saranno trasmesse in ...
Intel Core 13000 e 14000 aumentano uffic...
Gemini sta per arrivare in Google Maps: ...
2 minuti per vedere le 27 offerte imperd...
Ray-Ban Meta Display: tecnologia sorpren...
Un mini PC a prezzo stracciato, non cerc...
Al via i coupon nascosti di ottobre: qua...
Ferrari Elettrica si aggiorna solo in of...
Doppio sconto sugli smartphone top Xiaom...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Xiaomi 17 Ultra sta arrivando: ecco come...
Il Motorola Edge 70 non ha più se...
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: 18:16.


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