elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema de arreglo bidimencional
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema de arreglo bidimencional  (Leído 1,463 veces)
Luischicho

Desconectado Desconectado

Mensajes: 1


Ver Perfil
problema de arreglo bidimencional
« en: 12 Agosto 2019, 16:06 pm »

Buenos dias.
para ver quien me puede ayudar.
tengo el siguiente problema.

Usando un arreglo de dos dimensiones, se requiere un sistema que permita recibir las
notas de los estudiantes de un curso. Al iniciar el sistema debe preguntar cuántos
estudiantes se van a digitar. Después de eso, por cada estudiante, el sistema debe
recibir 3 notas (números decimales entre 0 y 5). Al finalizar de digitar todas las notas el
sistema debe mostrar:
o El listado de promedios de las tres notas de cada estudiante
o Cuantos estudiantes obtuvieron un promedio superior a 3.0

realice el siguietnte codigo pero no me da el resultado que se pide.

#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
    int cant;
    float nota[3];
    float promedio[5];
    float suma;


    cout<<"PROMEDIO DE NOTAS"<<endl;
    cout<<""<<endl;
    cout<<"INGRESAR CANTIDAD DE ALUMNOS A CONSULTAR:  "; cin>>cant;

    for(int i=0; i<cant; i++){
        cout<<"INGRESAR NOTAS DEL ALUMNO "<<i+1<<":"<<endl;

        for(int i=0; i<3; i++){
            cout<<"NOTA "<<i+1<<":     "; cin>>nota;

            if (nota<=5 && nota>0){
            suma+=nota;
        }else{
        cout<<"ERROR.. LA NOTA DEBE SER ENTRE 0 - 5"<<endl;
        return 0;
        }

        for(int j=0; j<cant; j++){
            promedio[j]=suma/3;
        }
      }
    }

     for(int i=0; i<cant; i++){
            cout<<""<<endl;
        cout<<"EL ALUMNO "<<i+1<<endl;
           for(int j=0; j<1; j++){
        cout<<""<<endl;
        cout<<" TIENE UN PROMEDIO DE: "<<promedio[j]<<endl;
           }
     }


    return 0;
}

quedo atento a su ayuda...


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: problema de arreglo bidimencional
« Respuesta #1 en: 12 Agosto 2019, 17:55 pm »

Lo primero de todo: El código entre etiquetas de código GeSHi   :-X :-X

Algunos consejos y cosillas que te pueden servir de ayuda;
  • No uses <stdio.h>. Esta librería es típica de C, no de C++ (en C++ es <cstdio>) y además no la usas para nada. Usas las entradas/salidas de <iostream> por lo que no la necesitas. Hay que saber lo que se pone y por qué se pone.
  • Sobre el <cout> y el <endl>: Se pueden concatenar estos últimos y no es necesario poner unas comillas vacías para usarlo por separado. También puedes usarlo antes de una cadena y después. Además puedes usar el caracter especial "\n" para saltos de línea (hay una sútil diferencia entre "\n" y <endl> pero bueno...)
Código
  1. cout << "Texto" << endl;
  2. cout << "Texto" << endl << endl << endl;
  3. cout << endl;
  4. cout << endl << "Texto" << endl;
  5. cout << "\nTexto" << endl;

Ahora los errores de tu programa:
  • No estás usando un array/arreglo bidimensional. Esto es una matriz y se declara con dos parejas de corchetes: <tipo> <nombre_matriz>[<filas>][<columnas>].
  • Estás acumulando valores (notas) en <suma> pero no has inicializado <suma> por lo que puede tener cualquier valor.
  • Debes guardar todas las notas y al no usar una matriz, una vez que has utilizado las notas de un alumno, las pierdes porque guardas las notas del siguiente.

Todos los ejercicios de este tipo tienen una forma estándar de hacerlos que es la siguiente:
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. // Usamos constantes y asi podemos agrandar o reducir los valores del programa sin tener que modificarlo entero
  6. const int MAX_ALUMNOS = 100; // numero maximo de alumnos que podemos tratar
  7. const int NUM_NOTAS = 3; // numero de notas por alumno
  8.  
  9. int main(){
  10.    // Creamos una matriz. Cada fila son las notas de un alumno y cada columna es una nota
  11.    double notas[MAX_ALUMNOS][NUM_NOTAS];
  12.    int num_alumnos; // numero de alumnos que vamos a tratar. Debe ser menor o igual que <MAX_ALUMNOS>
  13.  
  14.    // El promedio de cada alumno podemos guardarlo (necesitamos un array/arreglo mas entonces) o calcularlo y sobrescribirlo para cada alumno
  15.    double promedio[MAX_ALUMNOS] = {0}; // arreglo para guardarlos con cada celda inicializada en 0
  16.    double promedio = 0; // si no queremos guardarlos, basta con esto. Inicializamos a 0 para poder acumular luego ahi las notas
  17.  
  18.    // Podemos hacer un filtro para obtener el numero de alumnos a tratar
  19.    // El filtro te pide un valor y te lo sigue pidiendo mientras se cumpla la condicion del <while>
  20.    do{
  21.        cout << "Introduce el numero de alumnos: ";
  22.        cin >> num_alumnos;
  23.    }   while(num_alumnos < 1 || num_alumnos > MAX_ALUMNOS);
  24.    // El programa no pasara el filtro hasta que <num_alumnos> este entre 1 y <MAX_ALUMNOS>
  25.    // A partir de ahora usaremos <num_alumnos> en lugar de <MAX_ALUMNOS>
  26.  
  27.    // Pedimos las notas de cada alumno
  28.    for(size_t i = 0; i < num_alumnos; ++i){
  29.        cout << "Notas del alumno " << i+1 << endl;
  30.        for(size_t j = 0; j < NUM_NOTAS; ++j){
  31.        // Pedir cada nota
  32.        }
  33.        // Si vamos a guardar todos los promedios en un arreglo, podemos calcularlos aqui
  34.    }
  35.  
  36.    // ...El resto del programa...
  37. }

Yo creo que ya tienes una ayuda bastante grande con el programa. Ahora te queda terminarlo a ti (tampoco te lo iba a hacer entero...  :silbar:)
Si tienes algún problema en alguna parte, coloca tu código (entre etiquetas de código GeSHi) para que podamos ayudarte.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con arreglo
Java
nolasco281 2 1,876 Último mensaje 27 Abril 2014, 15:54 pm
por nolasco281
AYUDA!!! validar DNI en arreglo bidimencional
Programación C/C++
cristianf1hlm 1 1,754 Último mensaje 21 Febrero 2016, 19:48 pm
por MAFUS
Pasar a función un arreglo con punteros o con el nombre del arreglo como puntero
Programación C/C++
NOB2014 3 3,414 Último mensaje 9 Junio 2016, 17:10 pm
por geeke
Arreglo de apuntadores vs. arreglo común en lenguaje C.
Programación C/C++
NOB2014 1 3,267 Último mensaje 1 Octubre 2016, 23:29 pm
por dato000
problema con un arreglo :c
Programación C/C++
[ ] 2 2,149 Último mensaje 22 Abril 2018, 05:03 am
por [ ]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines