15 - Estructura de datos tipo array - varios arreglos paralelos

Este concepto se da cuando hay una relación entre las componentes de igual subíndice (misma posición) de un array y otro.

matrices y vectores paralelos

Si tenemos un array de tipo string en la que se almacenan los nombres de personas y un array de 5 enteros en la que se almacenan las edades de dichas personas, decimos que el array nombres es paralelo al array edades si en la componente 0 del array de nombres se almacena información relacionada a una persona (Juan - 12 años)

Es decir hay una relación entre cada componente del array de nombres y el array de las edades.

Esta relación la conoce únicamente el programador y se hace para facilitar el desarrollo de algoritmos que procesen los datos almacenados en las estructuras de datos.

Problema 1:

Desarrollar un programa que permita cargar 5 nombres de personas y sus edades respectivas. Luego de realizar la carga por teclado de todos los datos, imprimir los nombres de las personas mayores de edad (mayores o iguales a 18 años)

Programa: ejercicio072.go

package main

import "fmt"

func main() {
    var edades [5]int
    var nombres [5]string
    for f := 0 ; f < len(edadades); f++ {
        fmt.Print("Ingrese nombre:")
        fmt.Scan(&nombres[f])
        fmt.Print("Ingrese edad:")
        fmt.Scan(&edades[f])
    }
    fmt.Println("Personas mayores de edad.")
    for f := 0; f < len(edadades); f++ {
        if edades[f] >= 18 {
            fmt.Print(nombres[f]," ")
        }
    }
}

Mediante un for procedemos a la carga de cada nombre y su edad:

    for f := 0 ; f < len(edadades); f++ {
        fmt.Print("Ingrese nombre:")
        fmt.Scan(&nombres[f])
        fmt.Print("Ingrese edad:")
        fmt.Scan(&edades[f])
    }

Para imprimir los nombres de las personas mayores de edad verificamos cada componente del array de edades, en caso que sea igual o igual a 18 procedemos a mostrar el elemento de la misma posición del otro array:

    fmt.Println("Personas mayores de edad.")
    for f := 0; f < len(edadades); f++ {
        if edades[f] >= 18 {
            fmt.Print(nombres[f]," ")
        }
    }

Problemas propuestos

  • Ingresar el nombre de 5 productos en un array y sus respectivos precios en otro array paralelo de tipo float32.
    Mostrar cuantos productos tienen un precio mayor al primer producto ingresado (se debe contar)
  • En un curso de 4 alumnos se registraron las notas de sus exámenes y se deben procesar de acuerdo a lo siguiente:
    a) Ingresar Nombre y Nota de cada alumno (almacenar los datos en estructuras paralelas)
    b) Realizar un listado que muestre los nombres, notas y condición del alumno. En la condición, colocar "Muy Bueno" si la nota es mayor o igual a 8, "Bueno" si la nota está entre 4 y 7, y colocar "Insuficiente" si la nota es inferior a 4.
    c) Imprimir cuantos alumnos tienen la leyenda “Muy Bueno”.
Solución
ejercicio073.go

#include<stdio.h>

void cargar(char productos[5][41],float precios[5])
{
    int f;
    for(f=0;f<5;f++)
    {
        printf("Ingrese el nombre del producto:");
        gets(productos[f]);
        printf("Ingrese su precio:");
        scanf("%f",&precios[f]);
        fflush(stdin);
    }
}

void precioMayorPrimero(float precios[5])
{
    int f;
    int cant=0;
    for(f=1;f<5;f++)
    {
        if (precios[f]>precios[0])
        {
            cant++;
        }
    }
    printf("La cantidad de productos con un precio mayor al primero ingresado son:%i",cant);
}

void imprimir(char productos[5][41],float precios[5])
{
    int f;
    for(f=0;f<5;f++)
    {
        printf("Producto: %s - Precio: %0.2f\n",productos[f],precios[f]);
    }
}

int main()
{
    char productos[5][41];
    float precios[5];
    cargar(productos,precios);
    imprimir(productos,precios);
    precioMayorPrimero(precios);
    getch();
    return 0;
}




ejercicio074.go

#include<stdio.h>

void cargar(char nombres[4][40],int notas[4])
{
    int f;
    for(f=0;f<4;f++)
    {
        printf("Ingrese nombre del alumno:");
        gets(nombres[f]);
        printf("Ingrese su nota:");
        scanf("%i",¬as[f]);
        fflush(stdin);
    }
}

void imprimirEstado(char nombres[4][40],int notas[4])
{
    int f;
    for(f=0;f<4;f++)
    {
        printf("%s %i ",nombres[f],notas[f]);
        if (notas[f]>=8)
        {
            printf("Muy bueno");
        }
        else
        {
            if (notas[f]>4)
            {
                printf("Bueno");
            }
            else
            {
                printf("Insuficiente");
            }
        }
        printf("\n");
    }
}

void cantidadAlumnosMuyBuenos(int notas[4])
{
    int f;
    int cant=0;
    for(f=0;f<4;f++)
    {
        if (notas[f]>=8)
        {
            cant++;
        }
    }
    printf("Cantidad de alumnos muy buenos:%i",cant);
}


int main()
{
    char nombres[4][40];
    int notas[4];
    cargar(nombres,notas);
    imprimirEstado(nombres,notas);
    cantidadAlumnosMuyBuenos(notas);
    getch();
    return 0;
}