Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Jay en 2 Abril 2019, 08:21 AM

Título: TENGO VARIAS DUDAS CON MI CODIGO
Publicado por: Jay en 2 Abril 2019, 08:21 AM
TENGO VARIAS DUDAS CON MI CODIGO
1- NO SE POR QUE CUANDO ME IMPRIME LA POSICION EN LA QUE ESTA EL NUMERO MAYOR Y EL MENOR ME DA LA MISMA POSICION DEBERIA SER DIFERENTE

2- COMO PUEDO CONTAR LA CANTIDAD DE NUMERO POSITIVOS QUE SON Y CUALES SON, YA CONSIGO QUE ME HAGA LA SUMA DE LOS NUMEROS POSITIVOS Y NEGATIVOS PERO NO CONSIGO SABER COMO IMPRIMIR CUALES SON Y CUANTOS SON



#include <stdio.h>


int main()
{
        int arreglo[50],i, numero=10, positivos=0, negativos=0, ceros=0, mayor=0, menor=0, posicion=0;



        for (i = 0; i<numero; i++)//Se llena el arreglo con los 10 elementos que le pones
        {
        printf("Introduzca numero: \n");
        scanf("%d",&arreglo);

        }

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

            if(arreglo > mayor){
          mayor = arreglo;
          posicion = i;

        }

        if(arreglo < menor){
          menor = arreglo;
          posicion = i;

        }
        }

      for(i = 0; i<numero; i++)
        {
        if(arreglo > 0)
            positivos+=arreglo;

        }


      for(i = 0; i<numero; i++)
        {
        if(arreglo < 0)
            negativos+=arreglo;

        }




      printf("\nSuma de numeros positivos: %d", positivos);
      printf("\nSuma de numeros negativos: %d", negativos);
      printf("\nEl numero mayor es: %d y se encuentra en la posicion: %d", mayor,posicion);
      printf("\nEl numero menor es: %d y se encuentra en la posicion: %d", menor,posicion);



    return 0;
}
Título: Re: TENGO VARIAS DUDAS CON MI CODIGO
Publicado por: K-YreX en 2 Abril 2019, 10:41 AM
Para la próxima el código del programa entre etiquetas de Código GeSHi (puedes seleccionar el lenguaje de programación apropiado en un desplegable que hay encima del cuadro de texto)


Ese código tiene un problema. Si introduces todos los elementos positivos, el mínimo va a ser incorrecto y si introduces todos los elementos negativos, el máximo va a ser incorrecto... :rolleyes: :rolleyes:
Además tienes una variable que parece que es para contar los 0, pero no la estás usando...

Citar
1- NO SE POR QUE CUANDO ME IMPRIME LA POSICION EN LA QUE ESTA EL NUMERO MAYOR Y EL MENOR ME DA LA MISMA POSICION DEBERIA SER DIFERENTE
La posición es la misma porque lo estás guardando en la misma variable <posicion>... Por eso se sobreescribe la primera asignación que es la posición del número mayor y se guarda la última asignación que haces que es la posición del menor número del array.

Citar
2- COMO PUEDO CONTAR LA CANTIDAD DE NUMERO POSITIVOS QUE SON Y CUALES SON, YA CONSIGO QUE ME HAGA LA SUMA DE LOS NUMEROS POSITIVOS Y NEGATIVOS PERO NO CONSIGO SABER COMO IMPRIMIR CUALES SON Y CUANTOS SON
Para contar los números positivos y los negativos, crea dos variables <cantidad_positivos> y <cantidad_negativos> y como ya tienes una condición para detectar cuándo un número es positivo o negativo, sólo tienes que incrementar la variable correspondiente en cada caso.
Para saber cuáles son puedes:
Título: Re: TENGO VARIAS DUDAS CON MI CODIGO
Publicado por: Phoiinex en 2 Abril 2019, 20:16 PM
Hola,

Soy nuevo en esto de la programación, vi tu duda y me pareció un buen reto el  poder encontrar solución tanto al programa, como a tus dudas, espero haber ayudado.


#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
int arreglo[5], i, numero = 5, positivos = 0, negativos = 0,  mayor = 0, menor = 0, posicion = 0, posicion1 = 0,x;
int pos[5] = {}, neg[5] = {};//inicializamos todas las posiciones en 0, ya que por defecto el compilador inicializa los elementos que no tienen un valor específico.



for (i = 0; i < numero; i++)//Se llena el arreglo con los 10 elementos que le pones
{
printf("Introduzca numero: \n");
cin >>arreglo[i];

     //vamos guardando en nuestros array auxiliares los valor negativos y positivos
if (arreglo[i] > 0) {
pos[i] = arreglo[i];


}else {
neg[i] = arreglo[i];
}

}

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

if (arreglo[i] > mayor) {
mayor = arreglo[i];
posicion = i;

}

if (arreglo[i] < menor) {
menor = arreglo[i];
posicion1 = i;

}
}

for (i = 0; i < numero; i++)
{
if (arreglo[i] > 0)
positivos += arreglo[i];

}


for (i = 0; i < numero; i++)
{
if (arreglo[i] < 0)
negativos += arreglo[i];

}


//Salidas por pantalla
cout << "Los numero positivos son: ";
for (i = 0; i < numero; i++) //bucle que nos permitira imprimir todos los numero positivos como negativos
{
if (pos[i] > 0)   
{
cout << (pos[i]) << "  ";
}
}
printf("\nSuma de numeros positivos: %d", positivos);
printf("\nEl numero mayor es: %d y se encuentra en la posicion: %d", mayor, posicion);

cout << "\nLos numero negativos son: ";
for (i = 0; i < numero; i++) //bucle que nos permitira imprimir todos los numero positivos como negativos
{
if (neg[i] < 0)
{
cout << (neg[i]) << "  ";
}

}
printf("\nSuma de numeros negativos: %d", negativos);
printf("\nEl numero menor es: %d y se encuentra en la posicion: %d", menor, posicion1);

return 0;
}

 

YreX-DwX gracias por tus opciones me guié por ellas.

Título: Re: TENGO VARIAS DUDAS CON MI CODIGO
Publicado por: K-YreX en 2 Abril 2019, 21:08 PM
Cita de: Phoiinex en  2 Abril 2019, 20:16 PM
Hola,
Soy nuevo en esto de la programación, vi tu duda y me pareció un buen reto el  poder encontrar solución tanto al programa, como a tus dudas, espero haber ayudado.
Código (cpp) [Seleccionar]

#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
int arreglo[5], i, numero = 5, positivos = 0, negativos = 0,  mayor = 0, menor = 0, posicion = 0, posicion1 = 0,x;
int pos[5] = {}, neg[5] = {};//inicializamos todas las posiciones en 0, ya que por defecto el compilador inicializa los elementos que no tienen un valor específico.



for (i = 0; i < numero; i++)//Se llena el arreglo con los 10 elementos que le pones
{
printf("Introduzca numero: \n");
cin >>arreglo[i];

     //vamos guardando en nuestros array auxiliares los valor negativos y positivos
if (arreglo[i] > 0) {
pos[i] = arreglo[i];


}else {
neg[i] = arreglo[i];
}

}

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

if (arreglo[i] > mayor) {
mayor = arreglo[i];
posicion = i;

}

if (arreglo[i] < menor) {
menor = arreglo[i];
posicion1 = i;

}
}

for (i = 0; i < numero; i++)
{
if (arreglo[i] > 0)
positivos += arreglo[i];

}


for (i = 0; i < numero; i++)
{
if (arreglo[i] < 0)
negativos += arreglo[i];

}


//Salidas por pantalla
cout << "Los numero positivos son: ";
for (i = 0; i < numero; i++) //bucle que nos permitira imprimir todos los numero positivos como negativos
{
if (pos[i] > 0)   
{
cout << (pos[i]) << "  ";
}
}
printf("\nSuma de numeros positivos: %d", positivos);
printf("\nEl numero mayor es: %d y se encuentra en la posicion: %d", mayor, posicion);

cout << "\nLos numero negativos son: ";
for (i = 0; i < numero; i++) //bucle que nos permitira imprimir todos los numero positivos como negativos
{
if (neg[i] < 0)
{
cout << (neg[i]) << "  ";
}

}
printf("\nSuma de numeros negativos: %d", negativos);
printf("\nEl numero menor es: %d y se encuentra en la posicion: %d", menor, posicion1);

return 0;
}
 
Ya que estás empezando vamos a comentar el programa aunque he de decir que no se hacen tareas por lo que no deberías haber puesto tu código tan pronto. De todos modos tiene algunos fallos así que vamos a verlos. Al final dejo otras correcciones aunque no son errores como tal está bien corregirlos también: