elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / programa sobre colas en: 25 Junio 2011, 00:14 am
este programa no tiene errores al compilarlo pero cuando lo corro no funciona alguna sugerencia sobre que es lo q esta mal??  :-\
//programa que utiliza colas con memoria dinamica y calcula el promedio de los elementos
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

struct nodocola{
       int dato;
       nodocola *sig;
 };
typedef struct nodocola nodocola;

struct cola{
  nodocola *frente , *fin;
};
typedef struct cola cola;

void anadec(cola *,int);
int borrarc(cola *);
void inicializa(cola );
int vacia(cola );
void promedio(cola *);
void mostrarcola(cola *);
void menu(void);

int main(){
 int op,ban=1,x,n=1,z;
 cola c;
 inicializa(c);
 printf("\n PROGRAMA QUE UTILIZA COLAS Y CALCULA EL PROMEDIO DE SUS ELEMENTOS ");
 menu();
 while(ban==1){
  do{
  printf("\nDigite la opcion a utilizar:  ");
  scanf("%i",&op);
  }while(op<1 || op>6);
  if(op==1){
    if(n==1){
     printf("\n ¿Que dato desea agregar?");
     scanf("%i",&x);
     anadec(&c,x);
     printf("\n otro dato?? si-->1   no-->0" );             
     scanf("%i",&n);
     }
    else{   
      printf("\nDigite la opcion a utilizar:  ");
      scanf("%i",&op);
      }
  }
  if(op==2){
    borrarc(&c);
    printf("\n Dato borrado!!!!!!");                     
   }           
  if(op==3)           
    promedio(&c);           
  if(op==4)
    mostrarcola(&c);
  if(op==5)
    ban=0;             
 }//fin while   
 //getch();
}//fin main

void anadec(cola *c, int e){
 nodocola *a;
 a=(nodocola*)malloc(sizeof(nodocola));
 a->dato=e;
 a->sig=NULL;
 if(vacia(*c))
  c->frente=a;
 else
  c->fin->sig=a;
  c->fin=a;
} //fin anadec

int borrarc(cola *c){//------------------------------------------
 nodocola *a;
 int x;
 if(!vacia(*c)){
  a=c->frente;//--------
  x=a->dato;
  c->frente=c->frente->sig;
 if(c->frente==NULL)
  c->fin=NULL;
 free(a);
 printf("\n numero: %i ",x);//---------
 }
 else{
  puts("Error Eliminacion de una Cola Vacia") ;
  exit(-1) ;
 }
} // fin borrarc

void inicializa(cola c){
 c.frente=NULL;
 c.fin=NULL;
} // fin inicializa

int vacia(cola c){
  return(c.frente==NULL);
} // fin vacia

void menu(void){
 printf("\n Agregar un dato opcion      -->  1");
 printf("\n Borrar un dato  opcion      -->  2");
 printf("\n Calcular el promedio opcion -->  3");
 printf("\n Mostrar los datos           -->  4");
 printf("\n Salir del programa          -->  5");
}

void mostrarcola(cola *c){
/* Muestra los elementos de una cola
que se le pase como parametro */
int e;
nodocola *aux;
aux=c->frente;
while (aux!=NULL){
 e=aux->dato;
 printf("%d ", e);
 aux=aux->sig;
} // while
} // fin mostrar cola

void promedio(cola *c){
 int total=0,num=0;
 float prom;
 nodocola *aux;
 aux=c->frente;
 while(aux!=NULL){
   total=+aux->dato;
   num++;
   aux=aux->sig;
 }//fin while
 prom=total/num;
 printf("\n El promedio de los datos es: %.2f ",prom);
}//  fin promedio

2  Programación / Programación C/C++ / Re: nueva duda pila en C en: 28 Mayo 2011, 05:24 am
sino vas a ayudar mjor no respondas y si el post lleva tanto tiempo para q t metist en ste tema???
3  Programación / Programación C/C++ / Re: nueva duda pila en C en: 24 Mayo 2011, 05:24 am
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");
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines