elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 ... 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 [105] 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 ... 132
1041  Programación / Programación C/C++ / Re: Programa que elige el mayor complejo de un array de ellos. Fallo de salida en: 2 Febrero 2013, 15:49 pm
Uno de los problemas fundamentales está en el uso de TAMANO en las funciones, cuando deberías usar tamano, porque si no se llenan los restantes 50 valores de "basura" y te dan un resultado disparatado. Además creo que deberías incorporar la variable "módulo" a la strct, junto a parte real e imaginaria.
El otro error está en la función imprimir que le pasas un valor no establecido y te devuelve basura, aunque el resto del programa esté haciendo lo correcto.
Por cierto, puedes entrar el complejo nulo sin problemas, si  cambias lo de tamano.
Como prueba he cambiado algunas cositas ... y funciona. Fíjate en los cambios y adecua los a tus funciones originales:

Código
  1. #include <iostream>
  2. #include<cmath>
  3.  
  4. using namespace std;
  5. const int TAMANO = 50;
  6. struct TComplejo {
  7. double p_real, p_imaginaria;
  8. };
  9. typedef TComplejo Tarray[TAMANO];
  10. /*********************************************/
  11. /*void imprimirComplejo (TComplejo complejo){
  12. double a = complejo.p_real;
  13. double b = complejo.p_imaginaria;
  14. if (b<0){
  15. cout << a << "-" << b << "i" << endl;
  16. } else {
  17. cout << a << "+" << b << "i" << endl;
  18. }
  19. }*/
  20. /*********************************************/
  21. double moduloDeComplejo(Tarray& array, int tamano) {
  22. double modulo[tamano],mayor=0;
  23. for (int i = 0; i<tamano; i++){
  24.    double radikal = pow(array[i].p_real,2)+ pow(array[i].p_imaginaria,2);
  25.    modulo[i] = sqrt(radikal);
  26.  }
  27. for (int i = 0; i<tamano; i++){
  28.    if ( modulo[i]>mayor) mayor = modulo[i];
  29.    }
  30.  return mayor;
  31. }
  32. /*********************************************/
  33. /*void mayorComplejo (Tarray& array, int tamano){
  34. double mayor=0;
  35. //Tarray array1;
  36. for (int i = 0; i<tamano; i++) {
  37.  
  38. if ( moduloDeComplejo(i)>menor) mayor = moduloDeComplejo(i);
  39. }
  40. }*/
  41. /*********************************************/
  42. int cuantosHay(){
  43. int tamano;
  44. cout << "Introduzca cuántos complejos va a introducir: ";
  45. cin >> tamano;
  46. return tamano;
  47. }
  48. /*********************************************/
  49. void introduzcaValores(Tarray& array, int tamano){
  50. //Tarray array;
  51. for (int i = 0; i < tamano; i++) {
  52. cout <<endl<< "Introduzca parte real del complejo nº"<<i+1<<": ";
  53. cin  >>array[i].p_real;
  54. cout <<endl<< "Introduzca parte imaginaria del complejo nº"<<i+1<<": ";
  55. cin  >>array[i].p_imaginaria;
  56. }
  57. }
  58. /*********************************************/
  59. int main() {
  60. Tarray array;
  61. TComplejo elMayor;
  62. int tamano = cuantosHay();
  63. introduzcaValores(array, tamano);
  64.  cout <<endl<< "El complejo con mayor modulo de todos es -->  ";
  65.  cout<<moduloDeComplejo(array, tamano);
  66.  
  67.  return 0;
  68. }
  69. /*********************************************/
  70.  

Saluditos!.
REEDITO:
Con el valor tamano corregido, el valor mayor lo obtienes en la función "mayorComplejo" y desde ahí, con ese valor "mayor" llamo a la función imprimir ..... y funciona O.K:
Código
  1. #include <iostream>
  2. #include<cmath>
  3. #include<cstdlib>
  4. using namespace std;
  5. const int TAMANO = 50;
  6. struct TComplejo {
  7. double p_real, p_imaginaria;
  8. };
  9. typedef TComplejo Tarray[TAMANO];
  10.  
  11. void imprimirComplejo (TComplejo complejo){
  12. double a = complejo.p_real;
  13. double b = complejo.p_imaginaria;
  14. if (b<0){
  15. cout << a << b << "i" << endl;
  16. } else {
  17. cout << a << "+" << b << "i" << endl;
  18. }
  19. }
  20.  
  21. double moduloDeComplejo(TComplejo complejo) {
  22. double radikal = pow(complejo.p_real,2)+ pow(complejo.p_imaginaria,2);
  23. double modulo = sqrt(radikal);
  24. return modulo;
  25. }
  26.  
  27. void mayorComplejo (Tarray array1, TComplejo& complejo, int tamano){
  28. TComplejo mayor;
  29.  
  30. //Tarray array1;
  31. for (int i = 0; i<tamano; i++) {
  32. mayor = array1[i];
  33.    if ( moduloDeComplejo(mayor)>=moduloDeComplejo(array1[i])) mayor = array1[i];
  34.  
  35. }
  36. imprimirComplejo(mayor);
  37. }
  38.  
  39. int cuantosHay(){
  40. int tamano;
  41. cout << "Introduzca cuantos complejos va a introducir: ";
  42. cin >> tamano;
  43. return tamano;
  44. }
  45.  
  46. void introduzcaValores(Tarray& array, int tamano){
  47. //Tarray array;
  48. for (int i = 0; i < tamano; i++) {
  49. cout <<endl<< "Introduzca parte real del complejo "<<i+1<<": ";
  50. cin  >>array[i].p_real;
  51. cout <<endl<< "Introduzca parte imaginaria del complejo "<<i+1<<": ";
  52. cin  >>array[i].p_imaginaria;
  53. }
  54. }
  55.  
  56. int main() {
  57. Tarray array;
  58. TComplejo elMayor;
  59. int tamano = cuantosHay();
  60. introduzcaValores(array, tamano);
  61.  cout << "El complejo con mayor modulo de todos es -->  ";
  62. mayorComplejo(array, elMayor, tamano);
  63. return 0;
  64. }
  65.  
1042  Programación / Programación C/C++ / Re: coordenada con diferencia máxima en: 29 Enero 2013, 15:27 pm
si, me refería a ese concepto de correlación, pero eso es para ejemplificar mejor a que se aplica la función.

Ahora que hemos aclarado que
Código
  1. x-x[i]
no es una resta, sino el vector x sin la componente "i", el proceso sería construir en un bucle los vectores x e y sin la componente j, que irá siendo 0, 1,2 ....<size, de forma que cuando quites la coordenada j les apliques las fórmulas de correlación cada vez como te indico en el código
(te puedes ahorrar el std:: si estas usando using namespace std;):

 
Código
  1. std::vector<int>x0;//para no perder los vectores originales ...
  2.  std::vector<int>y0;//... al quitar una coordenada
  3. x=x0;
  4. y=y0;
  5.  int i,j;
  6. //ahora sin la componente j
  7.  for ( j=0;j<x.size();j++){
  8.    x.erase (x.begin()+j);
  9.    y.erase (y.begin()+j);
  10.    std::cout << '\n';
  11.    //para que lo veas sin la componente j
  12.    for ( i=0;i<x.size();i++)
  13.      std::cout << ' ' << x[i];
  14.    std::cout << '\n';
  15.    for ( i=0;i<y.size();i++)//para que lo veas sin la componente j
  16.      std::cout << ' ' << y[i];
  17.    std::cout << '\n';system ("pause");
  18.    //aqui viene el estudio de la correlacion de x e y sin la componente j
  19.    //y vas guardando en una variable ej. "menor" la menor diferencia de x e y
  20.    //que sobreentiendo que es el coeficiente de correlación muestral de Pearson
  21.    //y en otra variable ej. "menor_j" el índice correspondiente
  22.    x=x0;//Aquí reinicio x e y con los valores originales y le quito la siguiente componente
  23.    y=y0;
  24.  }
Si hay alguna duda, no dudes en exponerla.
Saluditos!.
1043  Programación / Programación C/C++ / Re: Ayuda principiante C++ (matices) en: 28 Enero 2013, 20:33 pm

"Escribir un programa en el que tenga que introducir unos numeros y este me los ordene de mayor a menor."

Mírate este enlace
http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja
Saluditos!.
P.D: También puedes usar el buscador del foro.
1044  Programación / Programación C/C++ / Re: coordenada con diferencia máxima en: 27 Enero 2013, 19:09 pm
El enunciado es:

Hacer la función cor_menos_uno(vector<double>x,vector<double>y);

Sabemos que la correlación entre x e y no es demasiado fuerte, y sabemos que en nuestras observaciones contenidas en
los vectores x,y hay una observación atípica. La función que debemos crear detectará cúal es la observación.
Código:
correlacion(x-x[i], y-y[i])∀ x∈{0,N-1}
,donde
Código:
 x-x[i]
e
Código:
y-y[i]
son los vectores x e y sin la observación
Código:
 x[i],y[i].
De todas estas, queremos la más grande, es decir queremos saber cúal es la observación i tal que  
Código:
correlacion(x-x[i], y-y[i])
sea la máxima. La función devuelve el subíndice i. double correlacion (vector <double>& x, vector <double>& y);

¡Gracias por el aporte! :)
Por si tú no lo has entendido, se trata de construir un nuevo vector donde no esté la componente i, y eso para cada una de las componentes y cada uno de los vectores x e y.
Osea, primero construyes un vexto "xsin" igual al x sin la componente 0, y lo mismo para y. Y luego el "xsin" será el x sin la componete 1, y lo mismo para el y. Esto que te comento ya está resuelto en otro post.
Y lo de la correlación, ¿ aqué te refieres?. Porque para ser precisos es:
http://es.wikipedia.org/wiki/Correlaci%C3%B3n
Seguro que te refieres a otra cosa.
Saluditos!.

1045  Programación / Programación C/C++ / Re: Voltear el dado en c++ en: 26 Enero 2013, 22:01 pm
otra cosa como haria el dibujo del dado ?????
En C++ a secas nada de nada.
Habría que recurrir a las API de windows y sus directx, o bien a las librerías de openGL o SDL o ...... Pero son librerías, a encontrar, instalar y saber manejar sus funciones respectivas.
Como vez ,un nuevo  mundo se abre ante tus ojos .... y hay más,claro.
Saluditos!.
1046  Programación / Programación C/C++ / Re: coordenada con diferencia máxima en: 26 Enero 2013, 21:51 pm
Hola,
Como harías el siguiente programa,
supongamos que tenemos dos vectores x, e y. Y queremos encontrar. la observación con diferencia mayor==>Ehhhhhhhhhhhhh ? ? ? ?

Es decir, encontrar el valor (x,y) que hace máxima la diferencia.
Código:
(x-x[i], y-y[i])
, este valor es una coordenada que tiene la misma posición para x e y.

Un vector se puede multiplicar o dividir por un escalar (no cero en la división), pero a un vector no se le puede sumar o restar un escalar, que es lo que es una coordenada.
Vamos, que la operación
Código:
(x-x[i], y-y[i])
no es posible.
Así que aclara mejor el enunciado campeón. :rolleyes:
Saluditos!.
1047  Programación / Programación C/C++ / Re: Voltear el dado en c++ en: 26 Enero 2013, 16:58 pm
una vez q he implenteado las partidas jugadas.¿ seria exactamente igual q con las partidas perdidas,ganadas,y final ?
La partidasJugadas sería igual a las ganadas+perdidas+empatadas.
Por cierto, ¿podrías explicarme mejor el sistema de puntuación?.
Aparentemente es el resultado del dado más la cara -norte,sur,este,oeste- que elija. ¿O estoy equivocado?. No entiendo lo de restarle 7 que comentas. :P
Saluditos!.
1048  Programación / Programación C/C++ / Re: Voltear el dado en c++ en: 25 Enero 2013, 21:40 pm
cuando puedas dime q mas esta mal gracias
Seguro que al elegir la opción 1 y el tipo norte,sur,etc te sale el menú principal sin que haga ninguna jugada. Eso se debe a que la opción de eC la tienes como "eC = 1+ rand ( ) % (6);" con lo que cuando sale "eC = 1 o 6 no se corresponde con los case de eC, que van de 2 a 5. Por eso debes cambiarlo a "2+ rand ( ) % (4);".
Por otro lado no tienes implementada la forma de calcular jugadas ganadas,empatadas, perdidas y, lo principal, simplemente jugadas. Este último caso lo logras con:

Código
  1.                      ...................................
  2. case 1:
  3.       partidasJugadas++; <==declara como int a esta variable
  4.       cout << "resultado del dado: " ;
  5.       cout << 1 + (rand()%6) << endl;
Ya me diras que tal te va con la implementación de las otras variables.
Saluditos!.
1049  Programación / Programación C/C++ / Re: ayuda muy urgente por favoooorrr!!!!!!! voltear el dado en c++ en: 25 Enero 2013, 17:17 pm
Para empezar bastaría con declarar "srand (time(NULL));" al comienzo el main y no llamarlo cada vez ya que así corres el riesgo que siempre te salga el mismo valor.
La puntuación lo miraré con más calma.
Saluditos".
1050  Programación / Programación C/C++ / Re: función que devuelva valores únicos en: 25 Enero 2013, 15:49 pm
Hola,

como harías una función que devuelva los números no repetidos,

v= 1 , 2 , 3 , 3 , 7 , 8 , 7 devuelva 1 , 2 , 3 , 7 , 8

Fíjate, como indica flony, que la función si va a devolver un int tiene que ser del tipo int, no vector. Pero en realidad no hace falta que devuelva nada, ya que los arrays se pasan por referencia y su valor en la función valen en el main. Otra cosa es el valor de la variable i de la función, que lo necesito y es el que retorno:
Código
  1. #include<iostream>
  2. #include<vector>
  3. #include<cstdlib>
  4. #include<clocale>
  5. using namespace std;
  6.  
  7. int vector_unico (vector <int>& v,int n){
  8.  int i,j,k;
  9.  for( i = 0,k=0; k < n; i++,k++){
  10.      cout<<"Ingrese el "<<i+1<<" numero: ";
  11.      cin>>v[i];
  12.    for( j = i-1; j >=0 ; j--){
  13.      if(v[i] == v[j]){
  14.        i--;break;
  15.      }
  16.    }
  17.  }
  18.  return i;
  19. }
  20.  
  21. int main(){
  22.  setlocale(LC_ALL, "Spanish");
  23.  int i,j,n,e;
  24.  cout<<"¿Cuántos números desea ingresar?: ";
  25.  cin>>n;
  26.  vector<int>v(n);
  27.  i=vector_unico(v,n);
  28.  for( j = 0; j < i; j++)
  29.    cout<<v[j]<<"  ";
  30.  system ("pause");
  31.  return 0;
  32. }
  33.  
Saluditos!.
Aunque podría no retornar nada e imprimir desde la función, teniendo en cuenta que el vector lo tienes disponible en main para cualquier otra operación:

Código
  1. #include<iostream>
  2. #include<vector>
  3. #include<cstdlib>
  4. #include<clocale>
  5. using namespace std;
  6.  
  7. int vector_unico (vector <int>& v,int n){
  8.  int i,j,k;
  9.  for( i = 0,k=0; k < n; i++,k++){
  10.      cout<<"Ingrese el "<<i+1<<" numero: ";
  11.      cin>>v[i];
  12.    for( j = i-1; j >=0 ; j--){
  13.      if(v[i] == v[j]){
  14.        i--;break;
  15.      }
  16.    }
  17.  }
  18.  cout<<"Tamaño del vector sin repetidos: "<<i<<endl;
  19.  for( j = 0; j < i; j++)
  20.    cout<<v[j]<<"  ";
  21.  }
  22.  
  23. int main(){
  24.  setlocale(LC_ALL, "Spanish");
  25.  int i,j,n,e;
  26.  cout<<"¿Cuántos números desea ingresar?: ";
  27.  cin>>n;
  28.  vector<int>v(n);
  29.  vector_unico(v,n);
  30.  system ("pause");
  31.  return 0;
  32. }
  33.  
Y ya que estamos, ¿para qué usar una función y la librería vector?. Podríamos hacer:
Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include<clocale>
  4. using namespace std;
  5.  
  6. int main () {
  7.    setlocale(LC_ALL, "Spanish");
  8.    int i,j,k,total;
  9.    cout<<"¿Cuántos números desea ingresar?: ";
  10.    cin>>total;
  11.    int numeros[total];
  12.    for( i = 0,k=0; i < total,k < total; i++,k++){
  13.        cout<<"Ingrese el "<<i+1<<" numero: ";
  14.        cin >> numeros[i];
  15.  
  16.        for( j = i-1; j >=0 ; j--){
  17.            if(numeros[i] == numeros[j]){
  18.                i--;break;
  19.            }
  20.        }
  21.    }
  22.  for( j = 0; j < i; j++)
  23.        cout<<numeros[j]<<"  ";
  24.  return 0;
  25. }
  26.  
Saluditos otra vez !.
Páginas: 1 ... 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 [105] 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 ... 132
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines