Informatică, întrebare adresată de 113jpt233, 8 ani în urmă

Se citesc n intervale, pentru fiecare interval se citește capătul din stânga și capătul din dreapta al intervalului. Să se determine numărul de ordine al intervalului cel mai scurt. (diferența între capătul din stânga și cel din dreapta este cea mai mică).
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n perechi de numere naturale, separate prin spații, reprezentând capetele intervalelor.
Date de ieşire
Programul afișează pe ecran numărul de ordine al intervalului cel mai scurt. Dacă există mai multe astfel de intervale se va afișa numărul de ordine al ultimului interval scurt.
Restricţii şi precizări
1 ≤ n ≤ 1000
intervalele sunt numerotate de la 1 la n
Exemplu
Date de intrare
6
7 9
6 7
8 12
11 10
10 6
11 13
Date de ieșire
4


(trebuie facut cu subprograme)

Răspunsuri la întrebare

Răspuns de Daniel4761
2

#include <iostream>

using namespace std;

int dif(int x, int y){

if(x>y) return x-y;

else return y-x;

}

void ordine(){

int n, i, a, b, min=-1, ordine;

cin>>n;

for(i=1;i<=n;i++){

 cin>>a>>b;

 if(min==-1 || min>=dif(a,b)){

  min=dif(a,b); ordine=i;

 }

}

cout<<'\n';

cout<<ordine;

}

int main()

{

ordine();

return 0;

}


Daniel4761: Sigur
Daniel4761: Nu trebuie decat sa stergi a doua functie si asta este int main-ul:
Daniel4761: int main()
{
int n, i, a, b, min=-1, ordine;
cin >> n;
for( i = 1; i <= n; i++){
cin >> a >> b;
if(min== -1 || min>=dif(a,b)){
min = dif(a,b); ordine = i;
}
}
cout << '\n';
cout << ordine;
return 0;
}
113jpt233: multumesc
Daniel4761: Cu placere!
113jpt233: mai am lao problema de citit doua numere delimitate de un spatiu
Daniel4761: Sigur
Daniel4761: Da-mi sa vad cerinta
113jpt233: defapt lasa ca acum a mer asa cum am facut eu
Daniel4761: ok
Alte întrebări interesante