/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

ayuda con agenda telefonica...

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
lorena_cg88



Registrado: 03 Oct 2007
Mensajes: 6

MensajePublicado: 03/10/2007 2:25 am
Título: ayuda con agenda telefonica...

wenas!
vereis, tengo que hacer una agenda telefonica en c, con una matriz de 2D (3 columnas: nombre, apellidos y telefono; y hasta 50 filas), y el problema esta en que, cuando hago la primera función que es la de añadir un nuevo contacto, me da un error con la matriz...(soy horrible con las matrices y los vectores... Confused )
aqui os dejo el programa, esta sin acabar (como podeis ver...)
el error me da en las lineas en negrita...
ahi va:

#include<stdio.h>

#define F 50
#define C 3

char primera_opcio (char taula [][], int numPersones);/*
char segona_opcio (char taula [][C]);
char tercera_opcio (char taula [][C]);
int quarta_opcio (char taula [][C]);*/

void main()
{
char taula[F][C];
int i,j,opc,numPersones;
do{
printf("0. Surt\n1. Afegeix contacte\n2. Modifica telefon\n3. Busca contacte\n4. Nombre de contactes\n");
printf("Escull una opcio:");
scanf("%d",&opc);

if (opc=1)
{
primera_opcio (taula, numPersones );
numPersones++;
}

if (opc=2)
{
segona_opcio (taula)

}while(opc!=0);
}

char primera_opcio (char taula [][], int numPersones)
{
printf("Introdueix el nom del teu contacte:\n");
scanf("%s",&taula [numPersones][0]);

printf("Introdueix els cognoms del teu contacte:\n");
scanf("%s",&taula[numPersones][1]);

printf("Introdueix el numero de telefon del teu contacte:\n");
scanf("%s",&taula[numPersones][2]);
}

que es lo que hago mal???
muchas gracias!! Wink
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3841
Ubicación: Mexico

MensajePublicado: 03/10/2007 7:49 am
Título:

No quiero desanimarte pero ese fragmento tiene muchos errores.

Lo primero que hay que aclarar es que tu necesitas una lista de 50 registros, esto se implementa como un array de 50 elementos:
Código:
registro[50]; /* incompleto */


Cada uno de estos registros a su vez consiste de tres campos (nombre, apellido y telefono), esto es otra "dimension" en el array:
Código:
registro[50][3]; /* incompleto */


Y finalmente cada uno de los tres campos es una cadena, los tres de la misma longitud, esto no lo indicas pero supongamos que sea igual a 128 caracteres:
Código:
char registro[50][3][128]; /* final */

Ese es el array que debes utilizar en tu programa, el registro lo indicas con "la primera dimension", el campo con la segunda y el caracter con la tercera.

Ahora bien, el primer error en el programa tal como esta se debe a que, cuando se declara una funcion y uno de sus parametros es un array solo se puede omitir la primera "dimension" pero no las demas como es tu caso en:
Código:
char primera_opcio (char taula [][], int numPersones); /*


El segundo error se genera en la funcion "main", declaras la variable "numPersones" pero no le das un valor inicial, el resultado de esto es que esa variable inicia con un valor no definido o "basura". A continuacion de esto llamas a la funcion "primera_opcio" pasandole el valor de "numPersones".

Para simplificar un poco tu programa deberias utilizar un array de estructuras (por supuesto esto solo si ya vieron ese tema en clase).

Tambien te recomendaria que compilaras tus programas en el modo mas estricto que permita tu compilador ya que esa es la forma mas facil de detectar ese tipo de errores.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
lorena_cg88



Registrado: 03 Oct 2007
Mensajes: 6

MensajePublicado: 03/10/2007 8:44 am
Título:

no, si no me desanimas, ya se que esto no se me da bien...jeje!

bueno, el numero de campos junto con sus registros esta definido al principio:

#define F 50
#define C 3


supongo que eso tambien vale, no?
lo que no sabia era que tenia que poner la longitud de los campos...no hace falta que ponga 128, no?
quiero decir, que puedo poner mas o menos longitud...

a otra cosa...
segun tu, esto:

char primera_opcio (char taula [][], int numPersones);

deberia cambiarlo por esto otro:

char primera_opcio (char taula [][C], int numPersones);??


en cuanto a lo de las estructuras...no lo hemos dado, pero tengo apuntes de eso, asi que probare a ver si me sale, si dices que asi se simplificaria un poco la cosa...pues mejor!

y nada, que muchas gracias!! Wink
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com