Errores con punteros
Publicado por Elisa (1 intervención) el 18/08/2006 12:09:06
Hola!intento usar el algoritmo divide y venceras para hallar el mayor de un vector. La restriccion es usar los metodos void(guardando la solucion en las cabeceras de los metodos). Tengo el siguiente fragmento de codigo y me devuelve un numero muy raro, creo que el problema esta en el uso de punteros. Por favor diganme que puedo hacer!!!Muchisimas gracias de antemano!!!
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void llenar(int v[],int n){
int i;
for (i=0;i<n;i++){
v[i]=rand()%20;
}
}
void mostrarvector(int v[],int n){
int i;
for(i=0;i<n;i++){
printf("%d ",v[i]);
}
}
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;
}
(Ejecutarlo, ya vereis que raro es esto)Gracias!!!!!!!!!
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void llenar(int v[],int n){
int i;
for (i=0;i<n;i++){
v[i]=rand()%20;
}
}
void mostrarvector(int v[],int n){
int i;
for(i=0;i<n;i++){
printf("%d ",v[i]);
}
}
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;
}
(Ejecutarlo, ya vereis que raro es esto)Gracias!!!!!!!!!
Valora esta pregunta


0