[SOLUCIONADO] C++ Problema al ingresar elementos a un arreglo

Iniciado por 2Fac3R, Abril 11, 2015, 07:56:11 PM

Tema anterior - Siguiente tema

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

Abril 11, 2015, 07:56:11 PM Ultima modificación: Abril 13, 2015, 02:24:46 AM por Gabriela
Buenas ;D

Resulta que tengo un ejercicio, pero no funciona como debería  ::) el asunto es que necesito que de cierto rango de enteros ingresarlos a diferentes arreglos dependiendo si es par o no.

Código: cpp

#include <iostream>

using namespace std;

int main()
{
    bool esPar(int);
    void mostrarArreglo(int arreglo[], int tam);
    int pares[20], nones[20];
    int i, j;

    for(i = 5, j=0; i<=100; i = i+5, j++)
    {
        if(esPar(i) == true)
        {
            pares[j] = i;
        }
        else
        {
            nones[j] = i;
        }

    }

    mostrarArreglo(pares,20);
    return 0;
}

bool esPar(int x)
{
    if(x%2 == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

void mostrarArreglo(int arreglo[], int tam){
  for (int i = 0 ; i < tam ; i++)
    cout << arreglo[i] << ", ";
}



Cuando lo ejecuto parece que el arreglo realmente nunca se llena y me muestra los datos basura del buffer.
Gracias por los comentarios :D
Zalu2

PD: No sé porqué lo movieron del subforo de c++ pero bueno  :-\
Sólo el conocimiento te hace libre.

Hay tienes compañero.
Código: cpp

#include <iostream>

using namespace std;

bool esPar(int x){
    if(x%2 == 0){
        return true;
    }
    else{
        return false;
    }
}

void mostrarArreglo(int arreglo[], int tam){
    for (int i = 0 ; i < tam ; i++)
        cout << arreglo[i] << " ";
}

int main(){
    int pares[20] = {0};
    int nones[20] = {0};
    int i, j;

    for(i = 5, j=0; i<=100; i += 5, j++){
        if(esPar(i) == true){
            pares[j] = i;
        }
        else{
            nones[j] = i;
        }
    }

    cout << "Arreglo de numeros pares: ";
    mostrarArreglo(pares, 20);
    cout << endl;
    cout << "Arreglo de numeros impar: ";
    mostrarArreglo(nones, 20);
    return 0;
}

Lo único que debías hacer era inicializar a 0 los arreglos, para que estos no almacenasen ningún valor "basura".

Un saludo!!


Piensa por ti mismo y cuestiona a la autoridad.

Gracias por la ayuda  ;D eso de estar acostumbrado a otros lenguajes se me olvida este tipo de cosas  :o

Lo modifiqué al último un poco y quedo así:

Código: cpp
#include <iostream>

using namespace std;

int main(){

    bool esPar(int);
    void mostrarArreglo(int[], int);

    int pares[20] = {NULL};
    int nones[20] = {NULL};
    int i, j=0 , k=0;

    for(i = 5; i<=100; i += 5){
        if(esPar(i) == true)
        {
            pares[j++] = i;

        }
        else
        {
            nones[k++] = i;
        }
    }

    cout << "Arreglo de numeros pares: ";
    mostrarArreglo(pares, j);
    cout << endl;
    cout << "Arreglo de numeros impar: ";
    mostrarArreglo(nones, k);


    return 0;
}

bool esPar(int x){
    if(x%2 == 0){
        return true;
    }
    else{
        return false;
    }
}

void mostrarArreglo(int arreglo[], int tam){
    for (int i = 0 ; i < tam ; i++)
        cout << arreglo[i] << " ";
}


Espero que a alguien le sirva  :D

Zalu2!
Sólo el conocimiento te hace libre.