View Single Post
Old 02-06-2007, 18:35   #1
k_mishima
Member
 
Iscritto dal: Jan 2007
Messaggi: 173
[C] Simulazione di uno stack

Ciao devo simulare lo stack in c con allocazione statica e dinamica, statica l'ho fatto, dinamica mi da 1 errore che non riesco a risolvere.

Codice:
#include <stdio.h>
#include <stdlib.h>
void pushs(int *, int **, int *);
void pops(int *);
main()
{
	int *x,*scelta,*a,*temp;
    short i;
    
    x=(int *)malloc(sizeof(int));
    scelta=(int *)malloc(sizeof(int));
    temp=(int *)malloc(sizeof(int));
    
	puts("Simulazione di una Pila (Stack)");
	puts("Inserire il numero di elementi della pila (max 30)");
	scanf("%d", x);
	
	a=(int *)calloc(*x,sizeof(int));
	puts("Inserire gli elementi della pila");
	for(i=0;i<*x;i++)
	{
		printf("%d-esimo elemento:",i);
		scanf("%d", a+i);
	}

	puts("\nPila:");
	for(i=0;i<*x;i++)
	{
		printf("%d ", a[i]);
	}

	puts("\n\nPossibili operazioni:\n");
   do
    {
    puts("\n[1] Inserire un nuovo elemento");
	puts("[2] Cancella un vecchio elemento");
	puts("[3] Terminare programma");
	scanf("%d", scelta);
	if(*scelta == 1)
	{
		//Inserimento di un elemento in una pila(Stack)
		puts("Quale elemento vuoi inserire?");
		scanf("%d", temp);
			
		pushs(temp, &a, x);
		puts("\nQuesto e' il nuovo array:");
		for(i=0;i<*x;i++)
		{
			printf("%d ", a[i]);
		} 
	}
	else if(*scelta == 2)
	{
		//Eliminazione di un elemento dalla pila(stack)
		pops(x);
		puts("\nQuesto e' il nuovo array:");
		for(i=0;i<*x;i++)
		{
			printf("%d ", a[i]);
		} 
		printf("\n");
	}
    }
	while (*scelta!=3);
	free(a);
	free(scelta);
	free(x);
	free(temp);
	system("pause");
}

void pushs(int *elem, int **a, int *n)
{ 
    (*a)=(int *)realloc((*a),sizeof(int));
	(*a)[n]=elem;
	n+=1;
}

void pops(int *n)
{
	(*n)--;
}
L'errore è array subscript is not an integer, nel codice la riga è segnata in nero.
La parte sul pop funziona.

P.s. ma non ci sono function già fatte per le pile?
k_mishima è offline   Rispondi citando il messaggio o parte di esso