Programación General > C/C++

 como asociar dos arreglos unidimensionales

(1/1)

luchojimenez:
tengo una  duda acerca de los arreglos  unidimensionales como enlazar dos  arreglos ejemplo arreglo nombre[] y sueldo[], yo conozco una forma  con estruct , pero me gustaria  emplearla, me gustaria que fueran solo  arreglos y que sean unidimensionales

nagitarami:
puedes poner una marca de caracter a una posicion del arreglo para saber cuando viene un nombre y un sueldo por ejemplo

*carlos jose martines*400$*joe luis*45$*...... etc

czealt:
Aja. Y luego utilizariamos la funcion strchr() para localizar y convertir el sueldo...  :good:

--- Código: C ---   char *psueldo, s[]="Angel Perez*311.423";  float sueldo;   psueldo=strchr(s,'*');  sscanf(psueldo+1,"%f",&sueldo);  printf("sueldo:%f n",sueldo);   

luchojimenez:
hombre  eso cuando es uno solo y si es  una lista de nombres, frente  a un arreglo de sueldos ingresados por teclado, ambos

czealt:

--- Cita de: "luchojimenez" ---hombre  eso cuando es uno solo y si es  una lista de nombres, frente  a un arreglo de sueldos ingresados por teclado, ambos
--- Fin de la cita ---

OK , aqui esta un programa de ejemplo. El programa pide datos tipo cadena de caracteres y floats , los cuales son dados a travez del teclado, y los almacena en un arreglo unidimensional ...


--- Código: C --- #include <stdio.h>#include <string.h> #define LMAX   10000#define NUMEMP 3 char datosempleado[LMAX];int lon_datos=0; int main(void){  char nombre[100],strsueldo[50],*pchar1,*pchar2;  float sueldo;  int i;   /* 1. Leemos los datos en el arreglo */  for(i=0;i<NUMEMP;i++)  {    printf("nDatos del empleado %d:nNombre: ",i+1);    fgets(nombre,100,stdin);    nombre[strlen(nombre)-1]='';     printf("Sueldo: ");    scanf("%f%*c",&sueldo);    sprintf(strsueldo,"%8.2f",sueldo); /* convierte el sueldo a una cadena de caracteres */     /* almacenamos los datos introducidos en el arreglo datosempleado */    strcpy(&datosempleado[lon_datos],nombre);    lon_datos+=strlen(nombre);     datosempleado[lon_datos++]='*'; /* pone la marca que divide a los nombres                                       de los sueldos */    strcpy(&datosempleado[lon_datos],strsueldo);    lon_datos+=strlen(strsueldo);     datosempleado[lon_datos++]='*';  }  datosempleado[lon_datos-1]=0; /* marca el fin del arreglo de datos */   /* 2. Se muestra en pantalla los datos almacenados */  i=1;  pchar1=datosempleado;  while(*pchar1)  {    int lon_nombre;    /* extraemos el nombre del arreglo de datos */    pchar2=strchr(pchar1,'*');    lon_nombre=pchar2-pchar1;    strncpy(nombre,pchar1,lon_nombre);    nombre[lon_nombre]='';     /* extraemos el sueldo */    pchar2++;    sscanf(pchar2,"%f",&sueldo);     /* mostrar los datos */    printf("nEmpleado %d:n"           "Nombre: %sn"           "Sueldo: %8.2fn",i++,nombre,sueldo);     pchar1=strchr(pchar2,'*');    if(pchar1)      pchar1++;    else      break;  }   return 0;}  
Saludos.

Navegación

[0] Índice de Mensajes

Ir a la versión completa