Dev - C++ - ayudita¿?

 
Vista:

ayudita¿?

Publicado por martin (1 intervención) el 25/05/2009 05:17:50
hola estoy intentando hacer un bucle que controle las veces que se repite un numero de un arreglo en otro .. pero no se que estoy haciendo mal ..de que algo esta mal estoy seguro ..alguien me ayuda

lo que hace bien :...es pedir el tamaño dela arreglo 1 y del arreglo 2 y colocar sus respectivos valores
lo que hace mal..no me sale hacer el bucle que controle cada uno de los valores del primero en el segundo .. si alguien me ayuda le agradezco:D


#include <iostream>
using namespace std;

int main()

{
int n,t,i,k,c;
int num[n],nums[t];

cout<<"Ingrese la cantidad de elementos del primer arreglo"<<" ";
cin>>n;

cout<<"Ingrese la cantidad de elementos del segundo arreglo"<<" ";
cin>>t;

i=0;

cout<<"Ingrese los elementos del primer arreglo"<<" ";
while (i<n)
{
cin>>num[i];
i++;
}

k=0;
cout<<"Ingrese los elementos del segundo arreglo"<<" ";
while (k<t)
{
cin>>nums[k];
k++;
}

i,k=0;
// aca esta el error NA: crap!!
while (i<n)
{
while (k<t)
{
if (num[i]==nums[k])
c++;

k++;

}
i++;

}

cout<<"La cantidad de veces que aparecen los elementos del primer arreglo en el segundo es "<<c<<" ";

system ("pause");

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

RE:ayudita¿?

Publicado por akabane89 (3 intervenciones) el 26/05/2009 22:26:47
HOLA, REVISE TU CODIGO Y ENCONTRE ERRORES QUE HE CORREGIDO, AHI ESTA ACLARADO EN LOS COMENTARIOS, ESPERO QUE TE AYUDE

SI TIENES DUDAS INFORMAMELAS, YO CON GUSTO RESPONDO PREGUNTAS
SOY NUEVO EN ESTE SITIO POR CIERTO JEJE.

TAMBIEN TE PUSE UN PAR DE CONSEJOS, HASTA PRONTO

#include <iostream.h>
#include <stdlib.h>


int main()

{
int n,t,i,k,c;
int num[10],nums[10]; // los tamaños predeterminados de un arreglo se inicializan con un numero, no con una variable

do{
cout<<"Ingrese la cantidad de elementos del primer arreglo"<<" ";
cin>>n;
}while(n<1 || n>10); // esto significa que se repite la peticion cuando n es menor que uno, o mayor que 10

do{
cout<<"Ingrese la cantidad de elementos del segundo arreglo"<<" ";
cin>>t;
}while(t<1 || t>10); // esto significa que se repite la peticion cuando t es menor que uno, o mayor que 10

// ten en cuenta ke n y t no pueden ser mayores que el tamaño pre definido que le des a tus arreglos
//es decir, no mayores que 10 en este caso
// si el usuario pone 11, o 12 o un numero negativo, vas a tener un error en el programa
// asi que de preferencia, encierra estos enunciados en un bucle, asi como te los estoy dejando
// de esta manera, si el usuario le dice al programa, que n o t es igual a un numero que no corresponde al que
//tu programa debe soportar, en este caso, n o t debe ser igual del 1 al 10, cualquier valor.
//si no pone uno de esos valores, entonces se repite la peticion de cantidad de elementos.

i=0;

cout<<"Ingrese los elementos del primer arreglo"<<" ";
while (i<n)
{
cin>>num[i];
i++;
}

k=0;
cout<<"Ingrese los elementos del segundo arreglo"<<" ";
while (k<t)
{
cin>>nums[k];
k++;
}

/*
OJO, POR QUE DEJAS A i SOLITA? NO TIENE SIGNIFICADO, SEGUROAMENTE QUISISTE DARLE i=0PARA QUE PUEDA SER RECORRIDO
EN EL SEGUNDO ARREGLO ASI QUE AKI LO CORREGIMOS

*/

//i,k=0; ASI ESTABA ESTA LINEA DE CODIGO AHORA LA CORRIJO

i=0;
k=0;
/*
TAL VEZ PENSASTE QUE EL VALOR DE CERO SE LE ASIGNABA A LOS DOS, A i y a k, PERO NO ES ASI,
TIENES QUE DARLE VALORES A CADA UNO, SI KERIAS QUE i Y k SEAN IGUALES A CERO, DEBES DARLE
EL VALOR EN LINEAS SEPARADAS, SINO EL PROGRAMA NO LO RECONOCE NI COMO ERROR, NI COMO SENTENCIA
*/
// aca esta el error NA: crap!!

/*
AQUI HAY OTRO ERROR, TU VARIABLE c NO LA INICIALIZASTE, DEBES DARLE VALOR CERO TAMBIEN
SI QUIERES QUE AUMENTE CON ++

*/

c=0;
while (i<n)
{/*
AQUI HAY OTRO DETALLE
PRIMERO i=0, Y ENTRA AL BUCLE Y DENTRO SIGUE EL BUCLE DONDE k VA AUMENTANDO, PERO UNA VEZ TERMINADO ESE BUCLE
k es = t
QUE VA A PASAR CUANDO i SEA = 1, SE HACE LA COMPARACION DONDE k SIGUE SIENDO IGUAL A t
Y NO VAS A PODER COMPARAR LOS DEMAS ELEMENTOS DE TU PRIMER ARREGLO, SOLO SE VA A COMPARAR SU PRIMER ELEMENTO
CON LOS ELEMENTOS DEL SEGUNDO ARREGLO.
ASI QUE CUANDO TENGAS ESTOS BUCLES O WHILES ANIDADOS, SIEMPRE ANTES DEL WHILE QUE ESTA DENTRO
TIENES QUE ANTEPONERLE LA INICIALIZACION DE SU INDICE
EN ESTE CASO k=0
*/
k=0;
while (k<t)
{
if (num[i]==nums[k]){
c++;
} // siempre les aconsejo a todos que separen todo en llaves, para poder revisarlo con orden
// incluso los if
k++;

}
i++;

}

cout<<"La cantidad de veces que aparecen los elementos del primer arreglo en el segundo es "<<c<<" ";

system ("pause");

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