Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Eroare de compilare CAUTARE BINARA  (Citit de 921 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Rmrn56
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« : Februarie 04, 2019, 16:07:12 »

Am incercat sa rezolv problema Cautare Binara; In codeblocks functioneaza ok, cu fisiere cu tot;
Problema e rezolvata in subprograme apelate in functie de caz. Subprogramul face cautarea binara plus cautarea pozitiei maxime sau minime a elementului, in functie de cerinta.

sursa arata asa:

#include <iostream>
#include<fstream>
#include<cmath>
#include<climits>
using namespace std;
int BS1(int v[],int l,int r,int x ){
int mid;
while(l<=r){
        mid=l+(r-l)/2;
     if(v[mid]<x) l=mid+1;
    else if(v[mid]==x){
        while(v[mid]==x)
            mid++;
            return mid-1;}
     else if(v[mid]>x) r=mid-1;
}
return -1;
}
int BS2(int v[],int l,int r,int x){
int mid,raux=r,laux=l;
while(raux>=laux){
        mid=laux+(raux-laux)/2;
    if(v[mid]==x){
             while(v[mid]==x)
            mid++;
            return mid-1;}
    else if(x>v[mid])laux=mid+1;
    else if(x<v[mid])raux=mid-1;
}
BS2(v,l,r,x-1);
}
BS3(int v[],int l,int r, int x){
int mid,raux=r,laux=l;
while(raux>=laux){
    mid=laux+(raux-laux)/2;
    if(v[mid]==x){
     while(v[mid]==x)
            mid--;
            return mid+1;
    }
    else if(x>v[mid])laux=mid+1;
    else if(x<v[mid])raux=mid-1;
}
BS3(v,l,r,x+1);
}
int main(){
int n,v[100005],x,m,caz;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
in>>n;
for(int i=1;i<=n;i++)
    in>>v;
in>>m;
    for(int j=1;j<=m;j++){
        in>>caz>>x;
        if(caz==0){
            out<<BS1(v,1,n,x)<<'\n';
        }
        if(caz==1){
            out<<BS2(v,1,n,x)<<'\n';
        }
        if(caz==2){
            out<<BS3(v,1,n,x)<<'\n';
        }

}
return 0;
}
Cu toate ca merge in CodeBlocks, primesc eroare de compilare aici. Una dintre sintagme arata asa. Imi poate explica cineva va rog ce inseamna si ce ar trebui sa fac?

main.cpp: In function 'int BS1(int*, int, int, int)':
main.cpp:12:9: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
while(v[mid]==x)
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines