Informatică, întrebare adresată de iacanaparolascurta, 9 ani în urmă

Va rog, ajutati-ma cu urmatoarea problema (C++):
Se citeste de la tastatura n, si apoi n perechi de cate doua numere intregi a si b cu ( a<0<b)
numere ce reprezinta capetele unor intervale inchise. Afisati pe ecran , doua numere x si y ce
reprezinta capetele intervalului intersectie al celor n intervale date.

De exemplu, pentru n=3 si perechile [-1,20], [-4,9], [-7, 12] , obtinem solutia x= -1 si y= 9.

Multumesc mult!

Răspunsuri la întrebare

Răspuns de rosudavidgabriel
0

#include <stdio.h>

#include <stdlib.h>

typedef struct Interval {

int x;

int y;

} Interval;

int intersectie(Interval* solutie, Interval* intervale, int numar_intervale) {

(*solutie).x = intervale[0].x;

(*solutie).y = intervale[0].y;

for (int i = 1; i < numar_intervale; i++) {

if (intervale[i].x > (*solutie).x) {

(*solutie).x = intervale[i].x;

}

if (intervale[i].y < (*solutie).y) {

(*solutie).y = intervale[i].y;

}

}

if ((*solutie).x > (*solutie).y) {

return -1;

}

return 0;

}

int main() {

int numar_intervale;

Interval* intervale;

Interval solutie;

// Citesc numarul de intervale

printf("Dati numarul de intervale:\n");

scanf("%d", &numar_intervale);

// Aloc memorie pentru intervale

intervale = (Interval*) malloc(sizeof(Interval) * numar_intervale);

// Citesc toate intervalele

for (int i = 0; i < numar_intervale; i++) {

printf("Dati intervalul cu numarul %d:\n", i + 1);

scanf("%d %d", &intervale[i].x, &intervale[i].y);

}

// Calculez solutia, daca exista

if (intersectie(&solutie, intervale, numar_intervale)) {

printf("Nu exista interval\n");

} else {

printf("Intervalul este: %d %d.\n", solutie.x, solutie.y);

}

// Eliberez memoria

free(intervale);

return 0;

}

Alte întrebări interesante