Ejercicios 13 04 2026
Hacer una
función que reciba un array de enteros en el rango 1..5 y un tope en el rango
0..5 y devuelva la suma de dichos elementos.
#include
<stdio.h>
//
Función que recibe un array de enteros y un tope (0..5)
//
Devuelve la suma de los elementos hasta ese tope.
int sumarArray(int arr[], int
tope) {
int suma = 0;
if (tope < 0 || tope > 5) {
printf("Error:
tope fuera de rango (0..5)\n");
return -1; // código de error
}
for (int i = 0; i < tope; i++) {
suma += arr[i];
}
return suma;
}
int
main() {
// Ejemplo con 5 elementos
int datos1[5] = {10, -3, 7, 25, 0};
int tope1 = 5;
int resultado1 = sumarArray(datos1, tope1);
if (resultado1 != -1) {
printf("La suma del primer array
es: %d\n", resultado1);
}
// Ejemplo con 3 elementos
int datos2[5] = {100, 200, -50};
int tope2 = 3;
int resultado2 = sumarArray(datos2, tope2);
if (resultado2 != -1) {
printf("La suma del segundo array
es: %d\n", resultado2);
}
// Ejemplo con tope = 0 (array vacío)
int datos3[5] = {0}; // no importa el
contenido
int tope3 = 0;
int resultado3 = sumarArray(datos3, tope3);
if (resultado3 != -1) {
printf("La suma del tercer array
es: %d\n", resultado3);
}
return 0;
}
Versión
ahora con un struct para el array:
#include <stdio.h>
#define MAX 5 // constante para
el tamaño máximo del array
// Definimos un struct que contiene el array y su tope
typedef struct {
int datos[MAX]; // hasta MAX enteros
int tope; // cantidad de elementos válidos
(0..MAX)
} ArrayEnteros;
// Función que recibe el struct y devuelve la suma de los elementos
int sumarArray(ArrayEnteros arr) {
int suma = 0;
if (arr.tope < 0 ||
arr.tope > MAX) {
printf("Error: tope
fuera de rango (0..%d)\n", MAX);
return -1; // código de
error
}
for (int i = 0; i < arr.tope; i++) {
suma += arr.datos[i];
}
return suma;
}
int main() {
//
Ejemplo con MAX elementos
ArrayEnteros a1 = {{10, -3, 7,
25, 0}, 5};
int resultado1 =
sumarArray(a1);
if (resultado1 != -1) {
printf("La suma del
primer array es: %d\n", resultado1);
}
// Ejemplo con 3 elementos
ArrayEnteros a2 = {{100, 200,
-50}, 3};
int resultado2 =
sumarArray(a2);
if (resultado2 != -1) {
printf("La suma del
segundo array es: %d\n", resultado2);
}
// Ejemplo con tope = 0 (array
vacío)
ArrayEnteros a3 = {{0}, 0};
int resultado3 =
sumarArray(a3);
if (resultado3 != -1) {
printf("La suma del
tercer array es: %d\n", resultado3);
}
return 0;
}
Atención cuando
el array con tope 2tiene menos elementos que el total y queremos definirlo como
constante:
Código con
lectura del array desde teclado
#include
<stdio.h>
#define
MAX 5 // constante para el tamaño
máximo del array
//
Definimos un struct que contiene el array y su tope
typedef
struct {
int datos[MAX]; // hasta MAX enteros
int tope; // cantidad de elementos válidos
(0..MAX)
}
ArrayEnteros;
//
Función auxiliar para leer el tope desde teclado
int leerTope() {
int t;
do {
printf("Ingrese
la cantidad de elementos (0..%d): ", MAX);
scanf("%d", &t);
if (t < 0 || t > MAX) {
printf("Valor
inválido. Debe estar entre 0 y %d.\n", MAX);
}
} while (t < 0 || t > MAX);
return t;
}
//
Función auxiliar para leer los elementos del array desde teclado
void leerArray(ArrayEnteros *arr)
{
arr->tope = leerTope();
for (int i = 0; i < arr->tope; i++) {
printf("Ingrese
el elemento %d: ", i + 1);
scanf("%d",
&arr->datos[i]);
}
}
//
Función que recibe el struct y devuelve la suma de los elementos
int sumarArray(ArrayEnteros arr) {
int suma = 0;
for (int i = 0; i < arr.tope; i++) {
suma += arr.datos[i];
}
return suma;
}
int main() {
ArrayEnteros a;
// Leer array desde teclado
leerArray(&a);
// Calcular suma
int resultado = sumarArray(a);
printf("La suma de los elementos es:
%d\n", resultado);
return 0;
}
Comentarios
Publicar un comentario