Informatică, întrebare adresată de rue72, 8 ani în urmă

3) Se citesc două numere întregi a și b. Să se interschimbe conținutul lor fără a folosi o variabilă auxiliară.

4) Se citesc dimensiunile pentru laturile unui triunghi. Să se calculeze aria și perimetrul triunghiului.

5) Fie x1, x2, x3, x4, x5 cinci valori reale. Scrieți un algoritm care să folosească o singură variabilă suplimentară pentru a permuta circular valorile celor cinci variabile, adică în final x1 să aibă valoarea inițială a variabilei x2, x2 valoarea inițială a lui x3, x3 valoarea inițială a lui x4, x4 valoarea inițială a lui x5, iar x5 valoarea inițială a lui x1.

URGENT!!! Dau coroana

Răspunsuri la întrebare

Răspuns de Konstei
2

3)

#include <iostream>

using namespace std;

int main() {

   int a, b;

   cin >> a >> b;

   swap(a, b);

   cout << a << " " << b;

   return 0;

}

4)

#include <iostream>

#include <cmath>

using namespace std;

int main() {

   int a, b, c;

   float p;

   cin >> a >> b >> c;

   p = (a+b+c)/2

   cout << "Primetrul triunghiului este " << p*2 << ".\n";

   cout << "Aria triunghiului este " << sqrt(p * (p-a) * (p-b) * (p-c)) << ".";

   return 0;

}

5)

#include <iostream>

using namespace std;

int main() {

   float x1, x2, x3, x4, x5, temp;

   cin >> x1 >> x2 >> x3 >> x4 >> x5;

   temp = x1;

   x1 = x2;

   x2 = x3;

   x3 = x4;

   x4 = x5;

   x5 = temp;

   return 0;

}


andrei750238: La prima problema (varianta alternativa):
a=a+b
b=a-b
a=a-b
Konstei: da, dar e mult mai usor (ca si sintaxa si de inteles) cand folosesti functia swap(); in rest nu face mai nici o diferenta
Konstei: de asemenea, la problema 5 se mai putea folosi swap(), dar enuntul specifica "care sa foloseasca o singura variabila suplimentara"
andrei750238: Da, in practica functia swap e mult mai usor de folosit. Dar daca incercam sa rezolvam problema din punct de vedere algoritmic atunci varianta "a=a+b;b=a-b;a=a-b;" este raspunsul standard asteptat.
andrei750238: Daca te uiti la implementarea functiei swap (inainte de C++11) vei vedea ca e implementata aproape identic cu varianta clasica (tmp=a; a=b; b=a), deci folosind variabila auxiliara. Practic nu ai folosit direct variabila auxiliara, ai folosit o functie care face acest lucru in locul tau. Unii profesori s-ar putea sa accepte aceasta varianta ca fiind valida, altii nu.
andrei750238: Iar in alte limabaje de programare (C de exemplu) nu exista functie standard predefinita pentru swap. Din punct de vedere strict algoritmic varianta cu diferenta e de preferat.

In practica da, se foloseste functia swap deoarece e mult mai usor de utilizat.
Konstei: Ai dreptate, chiar este o metoda mai buna deoarece poate fi folosita in orice limbaj. Cat despre faptul ca unii profesori nu ar accepta folosirea functiei swap, nu numai ca, la scoala, pe noi ne-a invatat sa folosim functia swap pentru interschimbarea valorilor a doua variabile, dar nici nu ne-a spus de algoritmul "a=a+b; b=a-b; a=b-a"; din fericire, eu stiam deja despre metoda asta, dar multi altii probabil ca nu stiau.
Alte întrebări interesante