Cod sursa(job #1483781)

Utilizator RaceanudRaceanu Dragos-Ion Raceanud Data 9 septembrie 2015 22:02:54
Problema Cautare binara Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.28 kb
#include<stdio.h>
int n,s[100];
int x;
int punctul_a(int li,int ls)
{
	int mij;
	while (li < ls)
	{
		mij = (li + ls) / 2;
		if (s[mij] <= x)
			li = mij + 1;
		else
			ls = mij - 1;
	}
	mij = (li + ls) / 2;
	if (s[mij]>x)
		mij--;
	if (s[mij] == x)
		return mij;
	return -1;
}
int punctul_b(int li, int ls)
{
	int mij;
	while (li < ls)
	{
		mij = (li + ls) / 2;
		if (s[mij] <= x)
			li = mij + 1;
		else
			ls = mij - 1;
	}
	mij = (li + ls) / 2;
	if (s[mij]>x)
		mij--;
		return mij;
}
int punctul_c(int li, int ls)
{
	int mij;
	while (li < ls)
	{
		mij = (li + ls) / 2;
		if (s[mij] <= x)
			li = mij + 1;
		else
			ls = mij - 1;
	}
	mij = (li + ls) / 2;
	return mij;
}
void main()
{
	printf("Dati lungimea vectorului:");
	scanf("%d", &n);
	printf("Dati vectorul crescator:");
	int i;
	for (i = 1; i <= n; i++)
	{
		scanf("%d", &s[i]);
	}
	printf("Dati valoarea cautata x:");
	scanf("%d", &x);
	printf("Pozitia pe care se afla valoarea cautata este: %d\n",punctul_a(1,n));
	printf(" Cea mai mare pozitie pe care se afla un element cu valoarea mai mica sau egala cu x in sir este: %d\n",punctul_b(1,n));
	printf(" Cea mai mica pozitie pe care se afla un element cu valoarea mai mare sau egala cu x in sir este: %d\n", punctul_c(1, n));
	
}