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
Ir a la versión completa