Buenas noches soy nuevo en lenguaje c, quisiera de su colaboración para resolver

Iniciado por Pentesting!, 20 Julio 2020, 09:05 AM

0 Miembros y 1 Visitante están viendo este tema.

Pentesting!


*/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++){
printf("Nombre:");
scanf("%s",&arrayCadenas[i]);
printf("edad:");
scanf("%d",&edad[i]);
}
validator(edad,arrayCadenas);
return 0;
}

void validator(int edad[], char arrayCadenas[]){
if(edad[0] > edad[1]){

printf("Nombre:%s",arrayCadenas[0]);
printf("Edad:%d",edad[0]);
}
else{

printf("Nombre:%s",arrayCadenas[1]);
printf("Edad:%d",edad[1]);
}
}


K-YreX

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';
    else while(getchar() != '\n');
  }
}
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;