Ayuda con este codigo hecho en c++

Iniciado por SXF, 4 Agosto 2011, 14:20 PM

0 Miembros y 1 Visitante están viendo este tema.

SXF

Buenas , tengo un problema con este código, el problema esta en que no me da un error en la compilación si no en la ejecución del mismo; se ejecuta el primer FOR, pero el segundo no , creo que el problema esta en el while pero no se porque;
Haber si alguien me puede ayudar:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace::std;
int main()
{    
   int array[7];
   int aux,cont1,cont2,i,j;
   for (j=0;j<6;j++){
       cout<<"Escribe el numero: "<<""<<endl;
       cin>>array[j];
       }

   for (i=0;i<6;i++)
{
                     
                   
while (array[i]!=10) {
       cont1= cont1 + 1;      
     }

 
       
}
cout<<"El numero de dieces es: "<<" "<<cont1<<endl;        
getchar();
   return 0;
 
}

bigfu

#1
Y tanto que está en el while. Date cuenta que un while es un bucle y si quieres comprobar que un elemento del array es un determinado valor, una de dos: o no entras nunca en el bucle o entras y haces un bucle infinito.
Yo cambiaría el while por un "if" que compare si el contenido es igual a 10, si lo que quieres es contar el numero de veces que se repite el 10, por lo que veo en el cout de abajo (por cierto, en ese cout estas imprimiendo un doble espacio antes del resultado).
A reader lives a thousand lives before he dies. The man who never reads lives only one

SXF

#2
Gracias por la respuesta , pero lo que quiero es lo siguiente:
180 168 200 -1 -1 55 -1 -1 500 66

Suponiendo que cada número que no sea -1 , es el kilómetro en el que hubo un accidente y el -1 significa que ese dia no hubo acidentes: hacer un código que nos diga que dia hubo mas accidentes, sabemos que en los km 180 168 200 , que es un día hubo accidentes y el -1 que es un dia hubo accidentes:
Para eso he hecho este còdigo pero me da error por lo del while y con el if no se puedo , ¿alguna idea?


Código (cpp) [Seleccionar]
#include <iostream>
using namespace::std;
int main()
{    
   int array[7]={180,168,200,-1,-1,55,-1,-1,500,66}
   int aux,cont1,cont2,i;

   for (i=0;i<6;i++)
{


        while (array[i]!=10)
       {
           cont1= cont1 + 1;      
       }

cont2=cont2 + 1;

if(cont2<aux) {cont2=0} else {cont2=aux}

}
cout<<"El numero  en el que hubo mas acidentes es:  "<<" "<<aux<<endl;        
getchar();
   return 0;

}

bigfu

Lo que hace el while es comprobar si el valor que tiene el array en la posición i es distinto de 10. Si es distinto de 10, entra en un bucle infinito (aumentando en 1 el valor de cont1 en cada iteración).
Si lo que quires es contar numeros positivos o negativos, tendrías que utilizar una estructura if-else, pero de todos modos no me queda claro el significado de los valores del array. ¿Cada número no negativo indica el kilómetro de la carretera? ¿Cada número indica un día?
A reader lives a thousand lives before he dies. The man who never reads lives only one

SXF

#4
Cada numero negativo indica que ese dia no hay accidente , mientras que si aparece un numero positivo o varios seguidos significa que ese dìa hubo accidentes , en lo kilòmetros que ese numero positivo indica; por ejemplo en los kilòmetros 180 168 200 hubieron tres accidentes en un dìa mientras que cuando pone -1 -1
significa que en el dìa 2 y tres no hubo accidente alguno;
Perdona pero en la condicion se me olvido cambiar el 10 por el -1 xD¡
Posdata si alguien cree que esto es una tarea no es asì , solo es por aprender nada mas.  

SXF

#5
Bueno después de tanto pensar aquì está una solución;


Código (cpp) [Seleccionar]

#include <iostream>
using namespace::std;
int main()
{   
    int aux=0,cont1=0,i=0,j;
    int array[100]={180,168,200,55,75,6,8,9,8,2,3,-1,-1,-1,5,0};

    do
       {                         
       if (array[i]!= -1){ cont1= cont1 + 1; }
       else if (cont1>aux){aux=cont1; cont1=0;}
     
         
         i++;
       
        } while (array[i]!=0);

       
       
        cout<<"El numero mayor de accidentes es:"<<aux;
   cin>>j;
   getchar();
   
    return 0;

}