Dev - C++ - Como Incrementar valor de un puntero en 1 automáticamente por cada dato nuevo

 
Vista:
sin imagen de perfil
Val: 60
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como Incrementar valor de un puntero en 1 automáticamente por cada dato nuevo

Publicado por Patricio (25 intervenciones) el 15/04/2019 03:47:42
Tengo el siguiente codigo, lo que necesito es que el contador count, se incremente automaticamente o alguna otra forma cosa que count del struct lista se aumente en 1 por cada dato nuevo ingresado, cosa que si pregunto el dato 8 ingresado debe tener el contador de 8 y su valor es 10 por ejemplo, he buscado como resolverlo pero no consigo resolverlo.

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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
struct lista{
	int numero;
	int count; //idea es puntero contador
	struct lista *sgte;
};
 
struct lista *primero, *ultimo, *nuevo;
 
void mostrar_menu();
void add_elemento();
void mostrar_lista();
 
int main(){
	char opcion;
	int a;
	primero=NULL;
	ultimo=NULL;
	do{
		mostrar_menu();
		opcion = getch();
		switch(opcion){
			case '1':
				add_elemento(5);
				add_elemento(7);
				add_elemento(4);
				add_elemento(3);
				add_elemento(1);
				add_elemento(8);
				add_elemento(9);
				add_elemento(2);
				break;
			case '2':
				printf("\nPendiente --->..........");
				break;
			case '3':
				mostrar_lista();
				break;
			case '4':
				//sort_lista();
				break;
			case '5':
				//printf("\nIngrese numero que busca: ");
				//scanf("%d", &a);
				//buscar_lista(a);
				break;
			case '6':
				exit(1);
				default: printf("\nOpcion Invalida, cerrando programa.");
		}
	}while(opcion!='6');
	return 0;
}
 
void mostrar_menu(){
	printf("\n\n\t\tMenu:\n\t\t=====\n\n");
	printf("\t1.- Add element\n");
	printf("\t2.- Borrar elementos (PENDIENTE)......\n"); //eliminar no esta consideradoe en la solemne, solo eliminar el primero o ultimo
	printf("\t3.- Mostrar Lista en pantalla\n");
	printf("\t4.- Ordenar lista de Mayor a Menor\n");
	printf("\t5.- Buscar lista\n");
	printf("\t6.- Salir\n\n");
	printf("\t\tEscoge una opcion: ");
	fflush(stdin);
}
 
void add_elemento(int x){
	nuevo = (struct lista*)malloc(sizeof(struct lista));
	nuevo->numero=x;
	nuevo->count=1; //COMO HAGO PARA QUE ESTE VALOR SE INCREMENTE EN 1
                                    //por cada numero nuevo ingresado
	nuevo->sgte=NULL;
	if(primero==NULL){
		printf("\n         Primer Dato es %d ",x);
		primero = nuevo;
		ultimo = nuevo;
	}
	else{
		ultimo->sgte = nuevo;
		ultimo=nuevo;
	}
}
 
void mostrar_lista(){
	struct lista *aux;
	int i = 1;
	aux=primero;
	printf("\n     Mostrando Datos de la Lista: ");
	while(aux!=NULL){
		printf("\n El dato %d es: %d y count vale * %d * ",i,aux->numero,aux->count);
		aux = aux->sgte;
		i++;
	}
	if(i==1)
		printf("\n\t La lista esta vacia...");
}
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 Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como Incrementar valor de un puntero en 1 automáticamente por cada dato nuevo

Publicado por Alfil (1444 intervenciones) el 15/04/2019 12:15:51
count debe estar previamente inicializado.

1
nuevo->count++;
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
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como Incrementar valor de un puntero en 1 automáticamente por cada dato nuevo

Publicado por Alfil (1444 intervenciones) el 15/04/2019 17:59:34
Hay varias formas de hacerlo

Con una variable global
Pasando una variable por referencia desde main
Con una variable static desde la funcion

Las variables estáticas dentro de una función conservan su valor entre llamada y llamada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void add_elemento(int x)
{
    static int N = 0;
    N++;
 
	nuevo = (struct lista*)malloc(sizeof(struct lista));
	nuevo->numero = x;
	nuevo->count = N;
 
	nuevo->sgte=NULL;
	if(primero==NULL){
		printf("\n         Primer Dato es %d ",x);
		primero = nuevo;
		ultimo = nuevo;
	}
	else{
		ultimo->sgte = nuevo;
		ultimo=nuevo;
	}
}
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