C/Visual C - Agenda

 
Vista:

Agenda

Publicado por Franco Cedillo (36 intervenciones) el 22/07/2005 09:51:55
Hola,

Estoy implementando el programa que simula un directorio telefónico.
Sólo deseo almacenar en memoria nombres y números telefónicos para luego mostrarlos.
En este ejemplo la prueba la hago con dos datos. Pero parece que el bucle for que pide los nombres no me pide los tres nombres.

Saludos

bucle que recorre la agenda:
=======================

for (i=0;i<=2;i++)

bucle que inicializa una cadena:
=========================

for (x=0;x<=15;x++)
cadena[x]=0;

problema completo:
================

#include <conio.h>
using namespace std;

int main()
{

struct registro
{
char name[15];
int phonenum;
} agenda[9];
int i,x;
char cadena[15];

for (i=0;i<=2;i++)
{

for (x=0;x<=15;x++)
cadena[x]=0;

cout<<"Name: ";
gets(cadena);
x=0;

while (cadena[x]!=0)
{
agenda[i].name[x] = cadena[x];
x++;
};

cout<<"Phone number: ";
cin>>agenda[i].phonenum;
cout<<endl;

};

for (i=0;i<=2;i++)
{
x=0;

while (cadena[x]!=0)
{
cout<<((agenda[i].name[x]));
x++;
};

cout<<endl;
cout<<agenda[i].phonenum;
cout<<endl;
};

system("PAUSE");
return 0;

}
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

RE:Agenda

Publicado por Charly (12 intervenciones) el 22/07/2005 19:23:51
No se a que te refieres exactamente, lo que entendi es que tienes un ciclo y capturas varias veces una estructura y algunos nombres no te deja capturarlos, si es eso, es por que al final de tu estructura capturas un telefono y termina con un enter entonces ese enter se queda en el buffer porque lo que te captura es solo el numero no el enter entonces ese error se solucion con una instruccion que te borre el buffer antes de capturar una cadena
fflush(stdin)

stdin es el archivo que entrada por teclado recuerda que C te maneja los dispositivos como archivos lo que no estoy seguro es de la instruccion fflush pruebalo y busca informacion de esto
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

RE:Agenda

Publicado por Franco Cedillo (36 intervenciones) el 22/07/2005 20:15:18
Hola,

Claro por ese lado iba mi duda. En pascal sucedía lago similar.. había que usar read o readln. el readln limpiaba el buffer y tomaba los datos separados por espacios.
Muy útil para que el usuario ingrese por teclado varios datos y sean almacenados en variables distintas.
Gracias

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

RE:Agenda

Publicado por Franco Cedillo (36 intervenciones) el 24/07/2005 00:19:04
Hola,

Sigo teniendo problemas para llenar un arreglo por teclado.
No sé cuál es la manera más adecuada de capturar una cadena.

Esta es la estructura

struct registro
{
char name[15];
int phonenum;
}

yo ptretendía capturar con un bucle

cout<<"Name: ";
gets(cadena);
fflush(stdin); //la idea es liberar el buffer pero no entiendo la sintaxis
x=0;

while (cadena[x]!=0)
{
agenda[i].name[x] = cadena[x];
x++;
};

Saludos.

===
a continuación el programa completo... con la captura del número telefónico ya hecha.. y las declaraciones implementeadas. Menú no desarrollado, primero deseo ver el llenado de la estructura.

/*
Escribir un programa que almacene en un array
los nombres y números de teléfono de 10 personas.
El programa debe leer los datos introducidos
por el usuario y guardarlos en memoria.
Después debe ser capaz de buscar
el nombre correspondiente a un número de teléfono
y el teléfono correspondiente a una persona.
Ambas opciones deben se accesibles a través de un menú,
así como la opción de salir del programa.
El menú debe tener esta forma, más o menos:

a) Buscar por nombre
b) Buscar por número de teléfono
c) Salir

Pulsa una opción:

Nota: No olvides que para comparar cadenas
se debe usar una función, no el operador ==.
*/

#include <iostream>
using namespace std;

int main()
{

struct registro
{
char name[15];
int phonenum;
} agenda[9];
int i,x;
char cadena[15];

for (i=0;i<=2;i++)
{

for (x=0;x<=15;x++)
cadena[x]=0;

cout<<"Name: ";
gets(cadena);
fflush(stdin);
x=0;

while (cadena[x]!=0)
{
agenda[i].name[x] = cadena[x];
x++;
};

cout<<"Phone number: ";
cin>>agenda[i].phonenum;
cout<<endl;

};

for (i=0;i<=2;i++)
{
x=0;

while (cadena[x]!=0)
{
cout<<((agenda[i].name[x]));
x++;
};

cout<<endl;
cout<<agenda[i].phonenum;
cout<<endl;
};

system("PAUSE");
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