thanks por los concjos q dist m sirvieron mucho. kisiera saber si akai m puedes ayudar en otra ocasion t lo agradcria mucho
EI: juntando mensajes.
/*hice st programa y m salen errores q no c que son intent corregirlos pro nada!!!
errores:
-cannot convert `tiponodo***' to `tiponodo**' for argument `1' to `void push(tiponodo**, int)'
-In function `float media(tiponodo**)':
-In function `int impardelete(tiponodo*)':
Y muchos otros mas!!!!!! talz vz puedan ayudarm xfa!!!!! */
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define Null 0
//declaracion de pila y funciones
typedef struct nodo{
int dato;
struct nodo *siguiente;
}tiponodo;
typedef tiponodo *pNodo;
typedef tiponodo *pila;
float media(pila *);
int impardelete(pila *);
int empty(pila *);
int pop(pila *);
void push(pila *,int);
void menu(void);
int main()
{
int op,z=0,x,popvalue;
pila *pl=Null;
menu();
scanf("%i",&op);
while(z==0){
switch(op){
case 1: printf("\n ingrese el valor que agregara a la pila");
scanf("%i",&x);
push(pl,x);
break;
case 2: if(empty(*pl)=Null)
printf("\n error la pila esta vacia");
pop(&pl);
printf("\n el valor eliminadio es: %i",popvalue);
break;
case 3: media(pl);
break;
case 4: impardelete(pl);
break;
case 5: z=1;
default: printf("error!!! elija la opcion de nuevo");
menu();
scanf("%i",&op);
break;
}//fin switch
}//fin while
getch();
}//fin main
//funciones
int empty(pila *ps)
{
return ((*ps)== Null);
}
void push(pila *ps, int a)
{
pNodo nuevo;
nuevo = (pNodo) malloc(sizeof(tiponodo));
if (nuevo != Null)
{
nuevo->dato = a;
nuevo->siguiente = *ps;
*ps = nuevo;
}
else
printf("No se pudo insertar el elemento. Falta de memoria\n");
}
int pop(pila * ps)
{
pNodo temp;
int popvalue;
temp = *ps;
popvalue = (*ps)->dato;
*ps = (*ps)->siguiente;
free(temp);
return popvalue;
}
//funcion que calcular la media
float media(pila *ps){
int x,i=0,total=0;
float media;
pila aux=Null;
while(ps!=Null){
x=pop(*ps);
total+=x;
i++;
push(aux,x);
}
media=total/i;
while(aux!=Null){ //reestablecer la pila
x=pop(aux);
push(ps,x);
}
}//fin media
int impardelete(pila ps)//funcion que elimina los numeros impares de la pila
{
int x,num=0;
pila aux=Null;
while(ps!=Null){
if((ps.dato)%2)!=0){
x=pop(ps);
num++;
else{
x=pop(ps);
push(aux, x);
}
return num;
}//fin while
}
void menu(void)
{
printf("\nElija la opcion que desea utilizar");
printf("\n insertar un dato 1");
printf("\n eliminar un dato 2");
printf("\n calcular la media 3");
printf("\n calcular el numero de impares 4");
printf("\n salir del programa 5");
}