C/Visual C - No muestra valores en struct C++

 
Vista:
sin imagen de perfil

No muestra valores en struct C++

Publicado por Danilo (10 intervenciones) el 29/07/2016 06:10:57
Buenas tardes

Primero que todo me presento, soy Danilo Martinez, Chileno e iniciandome en el mundo de C++.
pretendo profundizar lo mas que pueda en esta lenguaje de programacion ya que fue el primer lenguaje que conoci y quede enamorado de el pero como todo individuo se debe empezar desde el principio :).

ahora al asunto

este pequeñito programa almacena en una estructura el nombre y telefono de X usuarios. Al ser ingresados el usuario puede buscar el mumero telefonico con el nombre y viseversa.

el programa me corre pero no me muestra los datos que estan almacenados en la estructura.

que estoy haciendo mal?

perdon si no soy muy limpio con el codigo (estoy aprendiendo)

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
#include <stdlib.h> // uso de system
#include <stdio.h> // uso de scanf y printf
 
char busq_nombre(char nomb[40]);
int busq_telefono(int tel);
 
struct Persona
{
    char nombre[40];
    int telefono;
}Planilla[5];
 
int main()
{
    char nom[40], opcion, a, b, c, re1[40];
    int i, telef, re2;
    for(i = 0; i < 5; i++)
    {
        printf("Ingrese nombre num %i: \n", i + 1);
        fflush(stdin);
        scanf("%s", &Planilla[i].nombre[40]);
        printf("Ingrese telefono num %i: \n", i + 1);
        fflush(stdin);
        scanf("%i", &Planilla[i].telefono);
    }
    system("cls"); //limpia consola
    printf("--------Busqueda de personas -------\n");
    printf("a) Buscar por nombre \n");
    printf("b) Buscar por telefono \n");
    printf("c) Salir \n");
    fflush(stdin);
    scanf("%c", &opcion);
    switch (opcion)
    {
        case 'a':
            printf("Ingrese el nombre: \n");
            fflush(stdin);
            scanf("%s", &nom);
            re2 = busq_nombre(nom);
            printf("El telefono correspondiente a %s es %i \n", nom, re2);
            break;
        case 'b':
            printf("Ingrese el telefono: \n");
            fflush(stdin);
            scanf("%i" , &telef);
            re1[40] = busq_telefono(telef);
            printf("El nombre correspondiente a %i es %s \n", telef, re1);
            break;
        case 'c':
            break;
        default:
            printf("Opcion incorrecta: ");
    }
    system("pause");
    return 0;
}
 
char busq_nombre(char nomb[40])
{
    int i;
    for(i = 0; i < 5; i++)
    {
        if(Planilla[i].nombre == nomb)
        {
            return Planilla[i].telefono;
        }
    }
}
 
int busq_telefono(int tel)
{
    int i;
    for(i = 0; i < 5; i++)
    {
        if(Planilla[i].telefono == tel)
        {
            return Planilla[i].nombre[40];
        }
 
    }
}

favor su ayuda

saludos
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

No muestra valores en struct C++

Publicado por dario (13 intervenciones) el 29/07/2016 15:56:25
Hola Danilo.
Primero, tienes un error en la linea 63. No puedes comparar dos cadenas de texto con el signo(==) este signo solo se una para comparar valores numericos. Para comparar cadenas tienes que hacer uso de la libreria <string.h> y usar strcmp().
Te dejo tu ejercicio sin funciones. Pruebalo.
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
struct Persona
{
	char nombre[40];
	int telefono;
} Planilla[5];
 
int main()
{
	char nom[40];
	int i,opcion,num;
 
	//ingreso de datos
	for (i=0;i<5;i++)
	{
		printf("Ingrese nombre: ");
		scanf("%s",Planilla[i].nombre);
		printf("Ingrese telefono: ");
		scanf("%d",&Planilla[i].telefono);
	}
	printf("Presione ENTER para continuar...");
	getchar(); getchar();
 
	system("clear"); //esto solo es valido en linux. Yo uso linux.
	//buscar por nombre o telefono
	printf("Busqueda de datos por nombre o telefono\n");
	printf("---------------------------------------\n");
	printf("1. Buscar por nombre\n");
	printf("2. Buscar por numero de telefono\n\n");
	printf("Escoja su opcion: ");
	scanf("%d",&opcion);
 
	switch (opcion)
	{
		case 1:
			printf("Ingrese nombre a buscar: ");
			scanf("%s",nom);
			for (i=0;i<5;i++)
			{
				if (strcmp(nom,Planilla[i].nombre)==0)
					printf("El telefono es %d",Planilla[i].telefono);
			}
			break;
		case 2:
			printf("Ingrese numero de telefono a buscar: ");
			scanf("%d",&num);
			for (i=0;i<5;i++)
			{
				if (num == Planilla[i].telefono)
					printf("El numero le pertenece a %s",Planilla[i].nombre);
			}
			break;
		default:
			printf("Opcion invalida");
			break;
	}
 
	return 0;
}
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
sin imagen de perfil

No muestra valores en struct C++

Publicado por Danilo (10 intervenciones) el 30/07/2016 02:05:50
gracias, ahi me funciono.

ni idea que no se podia comparar una cadena de caracteres con ==.

te pasaste :)

saludos
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