Dev - C++ - Como valido las notas antes de ingresar

 
Vista:
sin imagen de perfil

Como valido las notas antes de ingresar

Publicado por Jorge (16 intervenciones) el 16/08/2015 20:36:00
Me piden que halle el promedio las notas de 40 alumnos y encuentre la menor nota.
Como valido que la nota no sea mayor que veinte y como hago el contador para que ingrese 40 alumnos
le envio el programa en el cual solo he colocado para 4 alumnos porque no se como hacerl lo que pido.
Gracias por el apoyo


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <stdlib.h>
using namespace std;
 
int main()
{
	system("color 0A");
	int numAl=4,num=1;
    float promedio=0,calificacion=0,menor=10000,total=0;
    while(num<5)
    {
        cout<<"Ingrese la calificacion del alumno numero : " << num << " "; cin>>
		calificacion;
        total = total + calificacion ;
       // numAl--;
        num++;
        if(calificacion<menor)
        {
            menor=calificacion;
        }
    }
 
		promedio = total / numAl ;
 
    cout<<"El promedio de las notas de los  40 alumnos es: "<<promedio<<endl;
    cout<<"La calificacion mas baja de los alumnos es    : "<<menor<<endl;
 
    return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como valido las notas antes de ingresar

Publicado por Thanatos (199 intervenciones) el 17/08/2015 04:23:45
Espero haber entendido tu pregunta correctamente. No indicaste si hay una nota mínima permitida, por eso no controlé el ingreso de notas negativas, pero no creo que tengas problemas si necesitas agregar esa restricción.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <limits>
 
using namespace std;
 
int main() {
    constexpr int totalAlumnos(40);
    constexpr int notaMaxima(20);
    int contNotas(1);
    float nota(0.0f);
    float acumNotas(0.0f);
    float menor(notaMaxima);
 
    cout << "Ingrese las calificaciones de los " << totalAlumnos << " alumnos:\n";
    while(contNotas <= totalAlumnos) {
        cout << "Alumno " << contNotas << " = ";
        if (cin >> nota) {
            if(nota < menor) {
                menor = nota;
            }
            if(nota <= notaMaxima) {
                acumNotas += nota;
                ++contNotas;
            } else {
                cout << "\n* Nota fuera de rango, debe ser menor o igual a 20 *\n\n";
            }
        } else {
            cout << "\n* El dato ingresado no es un numero valido *\n\n";
            cin.clear();
            (void)cin.ignore(numeric_limits<streamsize>::max(), '\n');
        }
    }
 
    cout << "\nEl promedio de las " << totalAlumnos << " notas es: "
         << acumNotas / totalAlumnos << endl;
    cout << "La calificacion mas baja es:   " << menor << endl;
 
    return 0;
}

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como valido las notas antes de ingresar

Publicado por Jorge (16 intervenciones) el 17/08/2015 08:03:34
Muchas gracias .
solo he sacado lo siguiente : constexpr porque me daba error en el compilador , y ahora funciona bien.

Mi pregunta es para que sirve constexpr
Saludos
Jorge Cervantes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 417
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como valido las notas antes de ingresar

Publicado por Thanatos (199 intervenciones) el 18/08/2015 04:40:53
Hola Jorge:

Los valores almacenados en "totalAlumnos" y "notaMaxima", no deben cambiar durante la ejecución de este programa, es decir, permanecen constantes. Como estos valores son conocidos de antemano, utilicé el especificador constexpr para declarar a "totalAlumnos" y a "notaMaxima" como constantes.

También se podía haber utilizado const, en lugar de constexpr. La diferencia entre ambas palabras reservadas es, que una constante declarada utilizando contexpr debe recibir un valor conocido en tiempo de compilación, como en el código que publiqué. Por otra parte, const nos permite declarar una constante cuyo valor puede ser desconocido en tiempo de compilación, pero que no cambiará una vez que la constante sea inicializada. Por ejemplo:

1. En la línea 7, el valor que se le asigna a "suma" se obtiene de la adición de la "constante" y un literal entero (1), este valor literal es conocido en tiempo de compilación, entonces el resultado de la adición también es conocido y no ocasiona errores al compilar:
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
using namespace std;
 
int main() {
    constexpr int constante(1);
    constexpr int suma(constante + 1);   // compila
 
    cout << "La suma es: " << suma << endl;
 
    return 0;
}

2. En este ejemplo, el valor de la variable "numero" se modifica cuando el usuario ingresa un número entero, por tanto, este nuevo valor es desconocido en tiempo de compilación, sólo se conocerá en tiempo de ejecución. Entonces, cuando intentemos utilizar constexpr en la línea 12, al momento de inicializar la constante "suma", el compilador mostrará un mensaje de error, porque el resultado de la adición aún no se conoce.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
int main() {
    constexpr int constante(1);
    int numero(0);
 
    cout << "Ingrese un numero entero:\nnumero = ";
    cin >> numero;
 
    constexpr int suma(constante + numero);   // error de compilación
    cout << "\nLa suma es: " << suma << endl;
 
    return 0;
}

3. La única diferencia que hay entre este y el anterior código, es el reemplazo de constexpr por const en la línea 12. Esto nos permite crear la constante "suma" sin errores de compilación, porque const no requiere que el valor de la variable "numero" se conozca de antemano.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
int main() {
    constexpr int constante(1);
    int numero(0);
 
    cout << "Ingrese un numero entero:\nnumero = ";
    cin >> numero;
 
    const int suma(constante + numero);   // compila
    cout << "\nLa suma es: " << suma << endl;
 
    return 0;
}

Una vez que una constante se ha inicializado correctamente, ya sea utilizando constexpr o const, cualquier intento de cambiar su valor provocará un error.

El especificador constexpr fue incluido a partir del estándar del año 2011 (C++11), debido a esto, el error que mencionas puede haberse producido porque el comando que utilizaste para compilar (o el que utiliza tu IDE para hacerlo), no especifica el uso del estándar C++11 o superior (C++14). También podría darse el caso de que la versión del compilador que estás utilizando sea algo antigua y no soporte los estándares más recientes.

Si ingresas a este sitio: http://cpp.sh/, podrás seleccionar entre los estándares C++98, C++11 y C++14 para compilar tu código. Inténtalo con el programa que publiqué como respuesta a tu pregunta inicial, verás que al utilizar los estándares C++11 o C++14 no se generarán errores debido al uso de constexpr.

Saludos....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Como valido las notas antes de ingresar

Publicado por Jorge (16 intervenciones) el 18/08/2015 08:01:05
Gracias por la explicación y voy a revisar lo que me has indicado, mi compilador no reconoce constexpr. , ahora esto usando el Dev C++ 5.9.2, ahora estoy aprendiendo a programar en C++ y tu sabes que cuando uno inicia toda ayuda es bienvenida. Son pocas las personas que ayudan y explican las cosas como tu. Personalmente yo le felicito. Ahora le copia otro programa que estoy comenzando hacer que casi se usa una parte de tu código.
Te envío para tu apoyo. Voy a ingresar a http://cpp.sh/


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//. Escriba el programa en código C++ para leer por varios clientes, el monto total vendido y al final del día reportar la cantidad total de ventas y el número de clientes atendidos. 
//NOTA: 
//-	Valide el ingreso de datos (positivos, negativos, cero).
//-	Use módulos (funciones o procedimientos).
//-	Use librería para lectura de datos. 
//-	Use el módulo principal para invocar a los módulos.
 
#include <iostream>
#include <windows.h>
using namespace std;
int monto_pedido(int pedido)
{
	int precio=10,resultado=0;
	resultado = precio*pedido;
	return resultado;
}
int monto_total(int &total,int monto)
{
	total = total + monto;
	return total;
}
 
void menu()
{
    int clientes=0,pedido=0,opcion=1,precio=0,precio_total=0,ventas=0;
    while(opcion==1)
    {
        cout<<"Bienvenido"<<endl;
        cout<<"1. Ingresar un pedido"<<endl;
        cout<<"2. Salir"<<endl;
        cout<<"Ingrese la opcion que desea ";cin>>opcion;
        if(opcion!=1) break;
        else
        {
        	cout<<"Ingrese el numero de Televisores que desea comprar: "; cin>>pedido;
        	precio = monto_pedido(pedido);
        	precio_total=monto_total(precio_total,precio);
        	cout<<"El precio total del pedido es: "<<precio<<endl;
        	clientes++;
        	ventas++;
		}
        Sleep(1000);
        system("cls");
    }
    cout<<"El numero total de clientes "<<clientes<<endl;
    cout<<"El monto total vendido "<<precio_total<<endl;
    cout<<"Cantidad de ventas "<<ventas<<endl;
    //return 0;
}
 
 
int main()
{
	cout<<menu()<<endl;
	//return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar