Program wydaję się działać dla każdej liczby z wyjątkiem '2' , nie mam pojęcia dlaczego.
link do zadania: https://main2.edu.pl/c/kurs-podstaw-algorytmiki-druga-e/p/akc/
kod:
#include <iostream>
using namespace std;
int zlicz(int zapytanie, int wynikiPomiaru[], int liczbaCzastek){
int p = 0;
int q = liczbaCzastek-1;
while(p<q){
if( wynikiPomiaru[(p+q)/2] >= zapytanie){
q = ( ( p+q ) / 2 ) - 1;
}else{
p = ( ( p+q ) / 2 ) + 1;
}
}
if(wynikiPomiaru[p]!=zapytanie){
return 0;
}else{
int licznik=1;
for(int i = p;i<liczbaCzastek;i++){
if(wynikiPomiaru[i]==wynikiPomiaru[i+1]){
licznik++;
}else{
break;
}
}
return licznik;
}
}
int main()
{
int liczbaCzastek=0;
int* wynikiPomiaru=NULL;
int liczbaZapytan=0;
int zapytanie=0;
cin>>liczbaCzastek;
wynikiPomiaru = new int[liczbaCzastek];
for(int i=0;i<liczbaCzastek;i++){
cin>>wynikiPomiaru[i];
}
cin>>liczbaZapytan;
for(int i =0;i<liczbaZapytan;i++){
cin>>zapytanie;
cout<<zlicz(zapytanie,wynikiPomiaru,liczbaCzastek)<<endl;
}
delete[] wynikiPomiaru;
return 0;
}
Może ktoś z Was wie dlaczego i mógłby mnie oświecić ;) .