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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  modificacion de codigo en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: modificacion de codigo en C  (Leído 3,086 veces)
DAOST420

Desconectado Desconectado

Mensajes: 11


Ver Perfil
modificacion de codigo en C
« en: 12 Noviembre 2020, 17:15 pm »

Hola gente tengo estos 2 vectores en donde en el primer vector se indica el numero mayor y en el segundo vector se indica en que posicion esta el mayor, recien probando mi codigo nose porque no funciona lo que seria indicar la posicion del mayor en el segundo vector ademas tengo que agregar que en el caso de que haya 2 numeros iguales en cada vector se deba indicar cuales son.
Código
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.   int vecA[5];
  5.   int vecB[5];
  6.  
  7.   int BuscaMayor(int []);
  8.   void EncuentraMayor(int [], int mayor);
  9.  
  10.   int f;
  11.  
  12.   for (f=1;f<=5;f++){
  13.    printf("Ingrese el elemento %d ",f); scanf("%d",&vecA[f]);
  14.   }
  15.  
  16.  printf("\n");
  17.  
  18.   for (f=1;f<=5;f++){
  19.    printf("Ingrese el elemento %d ",f); scanf("%d",&vecB[f]);
  20.   }
  21.  
  22.  int mayor = BuscaMayor(vecA);
  23.  
  24.  EncuentraMayor(vecB, mayor);
  25.  
  26. }
  27.  
  28.  
  29. int BuscaMayor(int vec[]){
  30.  
  31.  int f;
  32.  int mayor;
  33.  
  34.  mayor = vec[0];
  35.  
  36.  for (f=0;f<=4;f++) {
  37.  
  38.    if(vec[f] > mayor){
  39.      mayor = vec[f];
  40.    }  
  41.  
  42.  }
  43.  
  44.  printf("El mayor es %d en el vector 1 ", mayor);
  45.  
  46.  return mayor;
  47.  
  48. }
  49.  
  50. void EncuentraMayor(int vec[], int mayor)
  51. {
  52.  
  53.  int f;
  54.  int cont;
  55.  
  56.  cont=0;
  57.  
  58.  for (f=0;f<=4;f++)
  59.  {
  60.  
  61.    if(vec[f] == mayor)
  62. {
  63.      cont++;
  64.    }  
  65.  
  66.  }
  67.  
  68.  printf(        " Se econtro el mayor en la posicion %d del segundo vector ", cont);
  69.  
  70. }
  71.  


MOD: Seleccionado lenguaje C en las etiquetas de Código GeSHi


« Última modificación: 12 Noviembre 2020, 17:47 pm por K-YreX » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: modificacion de codigo en C
« Respuesta #1 en: 12 Noviembre 2020, 18:11 pm »

Entiendo que lo que quieres hacer es encontrar el valor del elemento más grande del primer array y la posición del elemento más grande del segundo array, no?

Tienes algunos problemas que son los siguientes:
  • Empiezas a rellenar el array en la posición 1 y acabas en la 5 (incluida). Los arrays tienen longitud 5 y como en C/C++, el primer índice es el 0, deberías recorrer desde 0 hasta 4 (incluido). {0,1,2,3,4} -> 5 posiciones. La posición 5 queda fuera del array.
  • En la función EncuentraMayor() no buscas los índices en los que se encuentre el elemento más grande sino cuántas veces aparece el elemento más grande. Esto es porque incrementas la variable cont cada vez que lo encuentras.

Además como consejo te recomiendo utilizar constantes para los tamaños y cuando trabajes con arrays como parámetros, pasa como parámetro también la longitud de este, así haces las funciones más genéricas y las puedes reutilizar más veces:
Código
  1. #include <stdio.h>
  2.  
  3. const int MAX_SIZE = 5;
  4.  
  5. int main(){
  6.  int v1[MAX_SIZE], v2[MAX_SIZE];
  7.  // Guardar los valores en los arrays. Recuerda: desde el 0 hasta el MAX_SIZE-1.
  8.  for(int i = 0; i < MAX_SIZE; ++i){
  9.    printf("Introduce el valor %d: ", i+1);
  10.    scanf("%d", &v1[i]);
  11.  }
  12.  //...
  13.  int valorMaximo = buscarMayor(v1, MAX_SIZE);
  14.  mostrarIndices(v2, valorMaximo);
  15. }

Como ves, la función buscarMayor() es igual solo que recibes la longitud como argumento. Su definición deberá ser:
Código
  1. int buscarMayor(int v[], int size);

En el caso de la segunda función, como puede ser que más de un elemento tenga el valor buscado, no podemos devolver el índice como un <int>. Se puede hacer devolviendo un array o modificando un array pasado como argumento pero como supongo que estás empezando, también puedes mostrarlo directamente en la función.
Código
  1. void mostrarIndices(int v[], int valorBuscado);
En esta función lo que tienes que hacer es cada vez que un elemento del array sea igual a <valorBuscado> muestras un mensaje con el índice que tiene tu iterador del bucle en ese momento.

Inténtalo y si tienes algún problema coméntalo. :-X


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Modificacion inocua de código con Olly
Ingeniería Inversa
TaU 7 4,239 Último mensaje 29 Abril 2004, 08:45 am
por Shaddy
modificacion de codigo para login
PHP
turion 0 2,018 Último mensaje 30 Septiembre 2009, 11:12 am
por turion
TUTORIAL: Modificación e inyección de código en ensamblados .NET
Ingeniería Inversa
karmany 1 2,899 Último mensaje 15 Febrero 2010, 20:20 pm
por Keyen Night
modificacion codigo ???
Programación C/C++
luis456 4 2,523 Último mensaje 14 Febrero 2014, 21:25 pm
por leosansan
MODIFICACION DE CODIGO FUENTE
Ingeniería Inversa
jarvis123 1 2,175 Último mensaje 14 Septiembre 2022, 23:52 pm
por Danielㅤ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines