Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI è l'appuntamento annuale con il quale l'azienda americana mostra quelle che sono le proprie novità dal versante datacenter. Tra piattaforma Helios, GPU Instinct MI455X e processori EPYC di sesta generazione tutto quello che serve per processare l'IA sempre più complessa ed esigente
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
BOOX Go 6 Gen II porta per la prima volta il supporto allo stilo su un e-reader da 6 pollici, affiancando 3 GB di RAM al collaudato Snapdragon 665 e un design rivisto con scocca posteriore a costolature. Su carta la proposta è interessante, ma Android 11 fuori supporto, l'assenza di un alloggiamento per il pennino e un'autonomia ridotta rispetto agli e-reader tradizionali sono i compromessi da accettare
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


Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Anthropic lancia Claude Opus 5: eclissa ...
Batterie a terra per Varta, bancarotta v...
Elon Musk: l'intelligenza artificiale su...
Ryzen 7 9800HX3D: il miglior processore ...
Google porta Gemini Live sui vecchissimi...
Corsair Platform:4 in offerta: la scriva...
Il creatore di Disagea sull'addio dei gi...
Fastweb + Vodafone entra nello SmartCity...
AI Act europeo: dal 2 agosto partono i n...
Da 1,3 a 10 miliardi in due mesi: chi è ...
Schede video RTX: NVIDIA comunica nuovi ...
GTA 6, i 60 fps stabili potrebbero esser...
Questa Smart TV QLED da 40 pollici con H...
Ring in sconto fino al 57%: videocitofon...
Pubblicità su Windows con i monit...
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: 23:41.


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