C/Visual C - AYUDA LISTAS

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 13 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

AYUDA LISTAS

Publicado por Facundo (1 intervención) el 06/11/2019 10:44:17
Hola, les muestro este código que consiste en cargar dos listas con números, en los cuales debo obtener los múltiplos de 2 y cargarlos en una 3er lista ordenada de forma ascendente.
Toda va bien, compila perfecto, pero la carga de la 3er lista no la muestra, no sé. Revísenla si pueden y arreglenla, agreguen sus comentarios para así aprender un poco más, ya que es poco mi conocimiento sobre como se maneja el lenguaje.

Muchas gracias, saludos.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <stdio.h>
#include <stdlib.h>
 
typedef struct snodo{
    int nro;
    struct snodo *prox;
}tnodo;
 
typedef tnodo *tpuntero;
void insertarEnLista1 (int e);
void insertarEnLista2 (int e);
void cargarlista3 ();
 
 
void imprimirLista ();
 
tpuntero *prim3;
tpuntero *prim;
tpuntero *prim2;
tpuntero *p1;
tpuntero *p2;
int main(){
	int e,a,b;
	tpuntero prim;
	prim=NULL;
	tpuntero prim2;
	prim2=NULL;
	int opc;
	do{
		printf("1-Cargar lista 1\n");
		printf("2-Cargar lista 2\n");
		printf("3-Mostrar multiplos de 2 que hay entre lista 1 y lista 2 ordenado de forma ascendente\n");
		printf("0-Salir\n");
		scanf("%d",&opc);
		switch (opc){
			case 1: insertarEnLista1(e);
					break;
			case 2: insertarEnLista2(e);
					break;
			case 3: cargarlista3(a, b);
					imprimirLista();
					break;
		}
 
	}while(opc!=0);
 
}
 
void insertarEnLista1 (int e){
	tpuntero prim;
	printf("Ingrese elementos, -1 para terminar: ");
    scanf("%d",&e);
 
    while(e!=-1){
    	tpuntero nuevo;
    	nuevo = malloc(sizeof(tnodo));
    	nuevo->nro = e;
    	nuevo->prox = prim;
    	prim = nuevo;
        printf ("Ingresado correctamente");
        printf ("\n");
        printf("Ingrese elementos, -1 para terminar: ");
        scanf("%d",&e);
    }
}
 
void insertarEnLista2 (int e){
	tpuntero prim2;
	printf("Ingrese elementos, -1 para terminar: ");
    scanf("%d",&e);
 
    while(e!=-1){
        tpuntero nuevo;
    	nuevo = malloc(sizeof(tnodo));
    	nuevo->nro = e;
    	nuevo->prox = prim2;
    	prim2 = nuevo;
        printf ("Ingresado correctamente");
        printf ("\n");
        printf("Ingrese elementos, -1 para terminar: ");
        scanf("%d",&e);
    }
}
 
void cargarlista3 (int a, int b){
	tpuntero prim;
	tpuntero prim2;
	tpuntero p1;
	tpuntero p2;
	p1=NULL;
	p2=NULL;
	p1=prim;
	p2=prim;
    tpuntero nuevo;
    nuevo = malloc(sizeof(tnodo));
    while ((p2->prox !=NULL) && (p1->prox !=NULL)){
    	if ((p1->nro % 2) ==0){
    		 a=p1->nro;
    	}
    	if((p2->nro %2)==0){
    		b=p2->nro;
    	}
    	if (a<b){
      		nuevo->nro=b;
      		nuevo->prox=*prim3;
      		*prim3=nuevo;
    	}else {
      		nuevo->nro=a;
      		nuevo->prox=*prim3;
      		*prim3=nuevo;
    }
    	p2=p2->prox;
    	p1=p1->prox;
    }
    if (prim2==NULL){
    	printf("ERROR, LISTA 2 VACIA");
    }
    if (prim==NULL){
    	printf("ERROR, LISTA 1 VACIA");
    }
}
 
void imprimirLista(){
	tpuntero prim3;
    while( prim3 != NULL){
        printf("%4d",prim3->nro);
        prim3 = prim3->prox;
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 352
Bronce
Ha disminuido 1 puesto en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

AYUDA LISTAS

Publicado por Rodrigo (100 intervenciones) el 09/11/2019 15:20:29
Las variables que defines al interior de las funciones son todas distintas.
Tienes muchas variables prim. Todas distintas, con vida y valor independiente.
Tal vez te sirve retornar su valor en vez de retornar void, y asignar su valor en el main.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar