Dev - C++ - Duda de arreglos y contadores

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda de arreglos y contadores

Publicado por Carlos (2 intervenciones) el 11/09/2020 07:36:32
omegaUp-Google-Chrome-10_09_2020-01_28_31-p-m-2
Tengo en hacer este programa que me dejaron de tarea ya que al ejecutarlo el ultimo contador siempre da 1 aunque más de 1 animal allá pasado por dos mares.

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
#include <iostream>
#include <map>
#include <stdio.h>
 
int main(int argc, char** argv)
{
    int N, rango=2, AnimalesEnDosMares=0, acumulador=0;
    scanf("%d", &N);
    int matriz[N][rango];
    for(int i=0; i<N; i++)
    {
        scanf("%d %d", &matriz[i][0], &matriz[i][1]);
    }
    for(int i=0; i<N; i++)
    {
        for(int k=0; k<N; k++)
        {
            if(matriz[k][0]==matriz[i][0])
            {
                if(matriz[k][1]==1)
                {
                    acumulador++;
                }
                if(matriz[k][1]==2)
                {
                    acumulador++;
                }
            }
        }
            if(acumulador==2)
        {
            AnimalesEnDosMares++;
        }
    }
    printf("\n%d", AnimalesEnDosMares);
    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++

Duda de arreglos y contadores

Publicado por Rodrigo (539 intervenciones) el 11/09/2020 08:31:02
Tu variable acumulador solo se incrementa. Parte en 0 y siempre se incrementa.
Por lo que el if que comprueba si acumulador == 2, solo puede darse 1 vez.

Te conviene volver ese acumulador a 0 alguna vez para que tenga sentido la comparacion con 2.

Deberias hacer el segundo ciclo desde k = i+1, para no contar 2 veces todo.
Por otro lado, si miras el ejemplo de entrada, el animal 1 esta 2 veces en el mar 2, y esto creo que tu programa lo contaria como un caso animal en 2 mares.

Por que no usas el animal como indice y te ahorras el doble ciclo?
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: 8
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda de arreglos y contadores

Publicado por Carlos (2 intervenciones) el 11/09/2020 08:46:56
Me ayudarías a reescribir el código?
La verdad es que no entiendo mucho de programación y lo que llevo me ayudaron y no sé como realizar lo que dices
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-2
Comentar