Jump to content

Recommended Posts

estimados como creo una lista con numeros hasta que el usuario dia si quiere ingresar mas o no y a eso que muestre los numeros mayores al promedio y evitando que se repitan?

 

lo que tengo echo es lo siguiente.

 

include <conio.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct _nodo{
int dato;
struct _nodo *siguiente;
}tiponodo;
typedef tiponodo *pnodo;
typedef tiponodo *Lista;
void insertar (Lista*lista, int v);
void main(){
Lista l=NULL;
pnodo aux;
aux=l;
int i,j,x=0;
int arreglo[]=[i];
while(aux){
printf("ingrese numero : ");
scanf("%d",%aux->dato);
aux=aux_>siguiente;
printf("desea ingresar otros numeros, si =1 no=2");
scanf("%d",&j);
if (j==1) return 0;
}

void insertar(Lista *lista,int v){
pnodo nuevo, anterior;
nuevo=(pnodo)malloc(sizeof(tiponodo));
nuevo->dato=v;
if(!(*lista)||(*lista)->dato >v){
nuevo->siguiente=*lista;
*lista=nuevo;
}
else{
anterior=*lista;
while(anterior->siguiente && anterior->siguiente->dato<=v)
anterior=anterior->siguiente;
nuevo->siguiente=anterior->siguiente;
anterior->siguiente=nuevo;
}
}

Link to comment
Share on other sites

Mi pregunta es, hay que evitar ingresar elementos repetidos, o se pueden ingresar pero a la hora de calcular el promedio no se consideran?

 

Yo las listas las implemento así, ojo que esta lista es simple, no doble como la tuya:

 

#include <stdio.h>
#include <stdlib.h>

//declaramos la estructura
typedef struct LISTA{
int d;
struct LISTA *sig;
}lista;


//crear nuevo nodo
lista *nuevonodo(int d){
lista *nuevo;
nuevo=(lista*)malloc(sizeof(lista));
nuevo->d = d;
nuevo->sig=NULL;
return nuevo;
}

//insertar elemento
void insertar(lista **primero, int d){

lista *nuevo=nuevonodo(d);

if (!*primero) {
 *primero=nuevo;
 return;
}

nuevo->sig=*primero;
*primero=nuevo;
}

 

 

 

Si quieres evitar que los elementos se repitan habría que modificar un poco el insertar para recorrer la lista antes con un auxiliar, y ver si ya existe el número.

 

Luego para calcular el promedio, te recomiendo que con un for recorras la lista, y vayas sumando los elementos, y al mismo tiempo con un contador cuentas los elementos de la lista, luego simplemente realizas el cálculo.

 

Te dejé mi código de lista simple porque viendo el tuyo está muy enredado y sin comentarios. Saludos.

Edited by zafrada
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...