Dev - C++ - pequeño error con el int

 
Vista:

pequeño error con el int

Publicado por lote23 (2 intervenciones) el 26/04/2020 07:16:17
Hola, cuando trato de ejecutar el código me aparece "expected primary-expression before 'int'" y no comprendo exactamente por qué... probé quitándole el int pero nada. gracias


CÓDIGO:

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
#include<iostream>
using namespace std;
 
const int N = 8;
const int M = 10;
 
 
double TiempoPromedio(int minutos[N]){
    int sumatoria=0;
    for(int i=0; i<N; i++){
        sumatoria += minutos[i];
    }
    minutos[N]=sumatoria;
    cout<<minutos[N];
 
    return minutos[N]/8;
}
 
int main(){
      string nombre[N] = {"Lala","Pepe","Jhon", "Sami","Juan","Luca","Matt","Raul"}; //Nombre de los estudiantes
      //Matriz de las respuestas de los estudiantes
     string matriz[N][M] = {{"A", "B", "A","C", "C" ,"D", "E" ,"E", "A", "D"},
                            {"D", "B", "A","B", "C" ,"A", "E" ,"E", "A", "D"},
                            {"E", "D", "D","A", "C" ,"B", "E" ,"E", "A", "D"},
                            {"C", "B", "A","E", "D" ,"C", "E" ,"E", "A", "D"},
                            {"A", "B", "D","C", "C" ,"D", "E" ,"E", "A", "D"},
                            {"B", "B", "E","C", "C" ,"D", "E" ,"E", "A", "D"},
                            {"B", "B", "E","C", "C" ,"D", "E" ,"E", "A", "D"},
                            {"E", "B", "E","C", "C" ,"D", "E" ,"E", "A", "D"}};
      int minutos [N] = {30,25,15,15,60,18,60,60};
      string respuestas[M] = {"D", "B", "D", "C", "C", "D", "A", "E","A", "D"};
 
      cout<<"Tiempo promedio del examen: "<<TiempoPromedio(int minutos[N])<<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
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

pequeño error con el int

Publicado por Rodrigo (539 intervenciones) el 26/04/2020 16:22:23
Linea 33

cambia

1
TiempoPromedio(int minutos[N])

por

1
TiempoPromedio(minutos)

Cuando invocas una funcion, pasas valores, no tienes que indicar el tipo de los datos.
En la funcion, tal como lo tienes en la linea 8, tienes que indicar el tipo de dato que recibes.
Con eso el compilador puede chequear que lo que le pasas calza con lo que se recibe.
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

pequeño error con el int

Publicado por lote23 (2 intervenciones) el 27/04/2020 00:51:08
Hola, muchas gracias, parece que funcionó pero a raíz de eso me surgió una duda... cuando le di a ejecutar me imprimió:

"Tiempo promedio del examen: 283El promedio del tiempo es:
28335.375"

Entonces, creo que algo está mal porque se supone que ese número es la suma de todos los intervalos de tiempo. Después de sumar debería dividirse por 8 (para sacar el promedio), pero no lo hace...
Y además, yo quise agregarle un extra al programa donde me mostrara la lista de los estudiantes y sus puntajes con otra función, pero al llamarla (como me indicaste) me aparecen un montón de errores...

Así va quedando:

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
57
58
#include<iostream>
using namespace std;
 
const int N = 8;//Cantidad de estudiantes
const int M = 10;//Cantidad de preguntas
 
 
double TiempoPromedio(float minutos[N]){
    int sumatoria=0;
    for(int i=0; i<N; i++){
        sumatoria += minutos[i];
    }
    minutos[N]=sumatoria;
    cout<<sumatoria;
    cout<<"El promedio del tiempo es: "<<endl;
    cout<<minutos[N];
 
    return minutos[N]/8;
}
 
void Puntaje_Estudiantes(string matriz[N][M], string nombre[N], string respuestas[M]){
    int sUma=0;
    int puntajes[N];
    for(int i=0; i<N; i++){
        for(int j=0; j<M; j++){
            if(matriz[i][j] == respuestas[M]){
                 sUma += 1;
            }
        }
        puntajes[i]=sUma;
    }
    cout<<"Alumnos\tPuntajes"<<endl;
    for( int i=0; i<N; i++){
        cout<<nombre[i]<<"\t"<<puntajes[i]<<endl;
    }
}
 
int main(){
      string nombre[N] = {"Lala","Pepe","Jhon", "Sami","Juan","Luca","Matt","Raul"}; //Nombre de los estudiantes
      //Matriz de las respuestas de los estudiantes
     string matriz[N][M] = {{"A", "B", "A","C", "C" ,"D", "E" ,"E", "A", "D"},
                            {"D", "B", "A","B", "C" ,"A", "E" ,"E", "A", "D"},
                            {"E", "D", "D","A", "C" ,"B", "E" ,"E", "A", "D"},
                            {"C", "B", "A","E", "D" ,"C", "E" ,"E", "A", "D"},
                            {"A", "B", "D","C", "C" ,"D", "E" ,"E", "A", "D"},
                            {"B", "B", "E","C", "C" ,"D", "E" ,"E", "A", "D"},
                            {"B", "B", "E","C", "C" ,"D", "E" ,"E", "A", "D"},
                            {"E", "B", "E","C", "C" ,"D", "E" ,"E", "A", "D"}};
      float minutos [N] = {30,25,15,15,60,18,60,60};
      string respuestas[M] = {"D", "B", "D", "C", "C", "D", "A", "E", "A", "D"};
 
      cout<<"Tiempo promedio del examen: "<<TiempoPromedio(minutos)<<endl;
 
      cout<<"Alumnos - puntajes"<<Puntaje_Estudiantes( matriz, nombre, respuestas)<<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
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

pequeño error con el int

Publicado por Rodrigo (539 intervenciones) el 27/04/2020 03:08:53
Es mas facil comentar el codigo si tiene numero de lineas.
Comentare el codigo original que veo que tiene numero de lineas. No este ultimo que no tiene ninguna.

No tengo idea por que te sale un numero que no es el que esperas, pero tengo algunas ideas:

Linea 13
estas asignando un numero al arreglo original, en un espacio donde no tienes permiso para hacerlo. Los indices validos van de 0 a N-1, el indice N no lo debes asignar, aunque el compilador te lo permita, y aunque el programa se ejecute. Al hacerlo, sobreescribes zonas de memoria que no te pertenecen y es una receta para el desastre. Ademas no lo usas para nada. No tiene sentido asignar.

En la linea 16, usa la variable sumatoria, no uses minutos[N] (que ya te he sugerido no modificar).

Si divides 2 enteros, el resultado es entero. 5/2 es 2, no es 2.5.
La funcion dice que devuelve un double, y lo hara, pero sera la conversion del entero que resulta de la division entera transformado en double.
Osea, 5/2 = 2 -> 2.0

Para forzar que la division sea double, transforma el dividendo o el divisor en double, por ejemplo cambia la linea 16 por

1
return sumatoria/8.0;

Cuando pidas ayuda respecto a errores que te aparecen, como en el ultimo post, sugiero que copies los errores que te aparecen, no solo digas que te aparecen errores. Y encierra tus codigos para que se vean con numeros de lineas.
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