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

Andrei este foarte dezorganizat şi uneori mai strecoară câte o minciună. Pentru a-l responsabiliza, mama i-a dat în grijă biletele la teatru. Când aceasta îl întreabă unde a pus biletele, Andrei spune că între paginile numerotate cu x şi y ale manualului de informatică.

Să se verifice dacă răspunsul lui Andrei poate fi corect – dacă poate plasa biletele între paginile numerotate cu x și y ale manualului de informatică.
date de intrare :49 50;
date e iesire: minciuna
La problema aceasta obtin pe pbinfo dor 80 de puncte pe structura de mai jos. Ce am gresit?
#include
using namespace std;
int main ()
{
int x,y;
cin >> x >> y;
if(y-x==1 && x%2==0)
cout<<"Andrei e mai responsabil";
else
cout<<"minciuna";

return 0;
}
Dau coroana!!


Utilizator anonim: incearca sa declari x si y ca "unsigned int"
nataliaachashiro: ok
Utilizator anonim: ori te depuncteaza ca a luat si valori negative, ori te depuncteaza la identare. Algoritmul e bun
Utilizator anonim: dar chiar daca iei si valori negative tot nu te depunca... hmmmmm
nataliaachashiro: tot 80 p imi  da
albastruverde12: oare x si y trebuie sa fie intotdeauna consecutive... ?
albastruverde12: sau in orice caz... y>x ?
Utilizator anonim: intre 2 pagini...deci 2 numere consecutive...si la numerotarea cartii, numarul din stanga e par
albastruverde12: de acord...aveam dubii caci la date de intrare este precizat: "Programul citeşte de la tastatură numerele naturale x şi y (reprezentând numărul paginilor)." ... insa daca y=x+1, atunci y nu ar mai trebui sa fie "citit de la tastatura"

Răspunsuri la întrebare

Răspuns de albastruverde12
30
Intocmai cum am spus si mai sus "oare x si y trebuie sa fie intotdeauna consecutive... ?" ..."sau in orice caz... y>x ?" Nu tocmai! Daca y>x atunci trebuie sa le interschimbam valorile, iar daca numerele nu sunt consecutive, se va considera o minciuna. Astfel, solutia pentru care am primit 100 de puncte este urmatoarea: 

#include <iostream>
using namespace std;
int main()
{
      int x,y,a;
      cin>>x>>y;
      while(x>y)
      {
         a=x;
         x=y;
         y=a;
      }
      if(y-x!=1) cout<<"minciuna";
      else
      {
          if(x%2==0) cout<<"Andrei e mai responsabil";
          else cout<<"minciuna";
      }
}

nataliaachashiro: mersii mult
albastruverde12: Cu mare placere!
Alte întrebări interesante