• Viernes 17 de Mayo de 2024, 04:18

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Eriol

Páginas: [1]
1
C/C++ / Rotar un arreglo arriba o abajo y hallar la moda.
« en: Miércoles 9 de Mayo de 2012, 16:41 »
Buen día, mi duda es la siguiente, tengo 2 ejercicios con vectores, arrarys o arreglos como mejor los conozcan y funciones en C++, es decir que tengo que hacer funciones para ello:

1. Debía crear un Vector que leyera N números, y en un menú colocar las opciones de rotar arriba o abajo de la siguiente forma:

Si el usuario ingresa un vector de caracteres:

1 2 3 4

Y elige rotar arriba, debo imprimir el vector original y las nuevas posiciones así:

2 3 4 1

Pero el usuario puede seguir eligiendo bien sea arriba o abajo, que si elige abajo en éste momento el vector vuelve a su posición original y eso, pero si elige arriba, debería mostrar:

3 4 1 2

De éste primer ejercicio, luego de tener una idea me perdí completamente y no he sido capaz de plantearlo como código  :ayuda:

2. Y por otro lado, tengo que hallar la moda en otro ejercicio estadístico, partiendo de la base de que la moda es el número que más se repite y que es único.

1 4 4 3 //En éste vector se supone que la moda es 4, pues es el único que se repite
1 1 44 // En éste se supone no hay moda pues hay 2 números que se repiten igual número de veces.

En éste si tengo la idea, pero no sé cómo hacer para que mi código vea que cambio si el contador es igual no hay moda. Lo coloco acá:

Código: C++
  1. float moda (float v[], int t)
  2. {
  3.         int c=1, a=1;
  4.         float n=0;
  5.         for (int i=0;i<t;i++)
  6.         {
  7.                 for (int j=i+1;j<t;j++)
  8.                 {
  9.                         if (v[i]==v[j])
  10.                         {
  11.                                 c++;
  12.                         }
  13.                         else
  14.                         {
  15.                                 if (c>a)
  16.                                 {
  17.                                         n=v[i];
  18.                                         a=c;                                   
  19.                                         c=1;
  20.                                 }
  21.                         }
  22.                 }
  23.         }
  24.         if (a>-1)
  25.                 return n;
  26.         else
  27.                 return -1;
  28. }
  29.  
Si sólo ingreso un número que se repita por decir algo 2 veces, pues normal, el programa me devuelve ese número como moda, el problema está en si ingreso 2 términos que se repitan igual número de veces, ahí me devuelve el primero que se repitió como moda.

De ante mano, agradezco cualquier ayuda y más aún cualquier cosa que me ayude a aclarar las dudas.

Páginas: [1]