Título: Buenas noches soy nuevo en lenguaje c, quisiera de su colaboración para resolver
Publicado por: Pentesting! en 20 Julio 2020, 09:05 am
*/Elabore un programa en lenguaje C que pida el nombre y la edad de dos hermanos, el programa debe mostrar un mensaje indicando el nombre y la edad del hermano mayor y, cuantos anos de diferencia lo distancia con el hermano menor. NOTA: Debe definir las variables tipo arreglo y, hacer uso de funciones para resolver el enunciado.*/ //En si lo que estoy tratando es de pasar el array tipo char como parametro a la funcion validator #include <stdio.h> #include <stdlib.h> void validator(int [], char []); int main() { char arrayCadenas[20]; int edad[2],i; for(i=0; i<2; i++){ scanf("%s",&arrayCadenas [i ]); } validator(edad,arrayCadenas); return 0; } void validator(int edad[], char arrayCadenas[]){ if(edad[0] > edad[1]){ printf("Nombre:%s",arrayCadenas [0]); } else{ printf("Nombre:%s",arrayCadenas [1]); } }
Título: Re: Buenas noches soy nuevo en lenguaje c, quisiera de su colaboración para resolver
Publicado por: K-YreX en 21 Julio 2020, 01:26 am
El problema que tienes es que estás utilizando un array unidimensional para el nombre y debería ser bidimensional. Cuando se trabaja con cadenas de caracteres, cada caracter es una posición del array por lo que la primera fila debería tener el primer nombre y la segunda fila, el segundo nombre. Además para guardar cadenas es mejor utilizar fgets() que scanf(). #define MAX_HERMANOS 2 #define MAX_SIZE 20 int main(){ char nombres[MAX_HERMANOS][MAX_SIZE]; for(int i = 0; i < MAX_HERMANOS; ++i){ printf("Introduce el nombre del hermano %d: ", i +1); fgets(nombres [i ], MAX_SIZE , stdin ); // Eliminar el salto de linea que se genera al pulsar ENTER y limpiar el buffer: if(nombres [i ][strlen(nombres [i ])-1] == '\n') nombres [i ][strlen(nombres [i ])-1] = '\0'; } }
|