Ayuda con código para implementar con el algoritmo divide y vencerás el mayor elemento de un vector
Quiero saber cual es el mayor elemento de un vector utilizando divide y vencerás y guardando la solución en las cabeceras de los métodos (es decir, siendo estos void). Creo que tengo un problema con los punteros y por eso no me funciona. Ejecute el siguiente código si es tan amable, ¿por qué me sale ese numero tan largo? ¿Qué puedo hacer?
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void llenar(int v[],int n){
int i;
for (i=0;i<n;i++){
v=rand()%20;
}
}
void mostrarvector(int v[],int n){
int i;
for(i=0;i<n;i++){
printf("%d ",v);
}
}
void combinar(int s1, int s2, int *sol){
if(s1>s2){
*sol=s1;
}
else{
*sol=s2;
}
}
int mayor(int v[],int iz, int de,int *s){
int s1,s2,sol,me;
if(iz==de){
return v[iz];
}
else{
me=(iz+de)/2;
mayor(v,iz,me,&s1);
mayor(v,me+1,de,&s2);
combinar(s1,s2,&sol);
}
*s=sol;
}
int main(){
int n=8;
int v[n];
int s=0;
llenar(v,n);
mostrarvector(v,n);
printf("\n");
mayor(v,0,n-1,&s);
printf("El mayor es: %d",s);
getch();
return 1;
}
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void llenar(int v[],int n){
int i;
for (i=0;i<n;i++){
v=rand()%20;
}
}
void mostrarvector(int v[],int n){
int i;
for(i=0;i<n;i++){
printf("%d ",v);
}
}
void combinar(int s1, int s2, int *sol){
if(s1>s2){
*sol=s1;
}
else{
*sol=s2;
}
}
int mayor(int v[],int iz, int de,int *s){
int s1,s2,sol,me;
if(iz==de){
return v[iz];
}
else{
me=(iz+de)/2;
mayor(v,iz,me,&s1);
mayor(v,me+1,de,&s2);
combinar(s1,s2,&sol);
}
*s=sol;
}
int main(){
int n=8;
int v[n];
int s=0;
llenar(v,n);
mostrarvector(v,n);
printf("\n");
mayor(v,0,n-1,&s);
printf("El mayor es: %d",s);
getch();
return 1;
}
1 respuesta
Respuesta de muerte666
1