Sari la conținut
Forum Roportal
Rookie2013

Diferenta dintre doua unghiuri in grade ,min si sec (Program)

Evaluează acest topic

Postări Recomandate

#include <stdio.h>\
#include <stdlib.h>
#include <iostream.h>
#include <stdlib.h>



void main(void){
int a[3],b[3],c[3],i;
long int z,y,x;

ldiv_t imp;

i=0;

cout<<"Dati primul unghi in grade,minute si secunde:";
{
cin>>a[0];
if ((a[0]>=0)&&(a[0]<360)) i=1;
cin>>a[1];
if ((a[1]>=0)&&(a[1]<60)) i=1;
cin>>a[2];
if ((a[2]>=0)&&(a[2]<60)) i=1;
}while (i==0);

cout<<"Dati al doilea unghi in grade,minute si secunde:";
{
cin>>b[0];
if ((b[0]>=0)&&(b[0]<360)) i=1;
cin>>b[1];
if ((b[1]>=0)&&(b[1]<60)) i=1;
cin>>b[2];
if ((b[2]>=0)&&(b[2]<60)) i=1;
}while (i==0);

z=(a[0]*3600)+(a[1]*60)+a[2];
y=(b[0]*3600)+(b[1]*60)+b[2];
if (z>=y) x=z-y;
else x=y-z;
imp=ldiv(x,60);
c[2]=imp.rem;
x=imp.quot;
imp=ldiv(x,60);
c[1]=imp.rem;
c[0]=imp.quot;
cout<<"Diferenta celor doua unghiuri este:"<<c[0]<<" "<<c[1]<<"' "<<c[2]<<"''.";

}

 

 

 

 

 

 

 

//acesta este programul

Daca ii dai diferente usoare cum ar fi 25 0' 0" - 15 1' 1" , ti-l face usor dar daca ii dai 36 25' 15" -23 30' 25" diferenta imi da de 7 58' 29" in loc de 12 54' 50". Cred ca nu este suficient de bun long int si operatia sa pe long int (adica ldiv). Ce sfaturi mi-ati putea da?

 

Partajează acest post


Link spre post
Distribuie pe alte site-uri

nu ai de ce sa lucrezi cu long int din moment ce folosesti nr mici.

 

calculele sunt gresite(logica de a ajunge la rezultat). foloseste debugul si vezi cum se schimba valorile

 

poti folosi % si /

 

sau din moment ce le pui in vector poti face scaderea pe componente. la modul cum calculezi tu degeaba folosesti vectori dc le aduni pe toate intr-o singura valoare.

Editat de Redondo

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Daca ii dai diferente usoare cum ar fi 25 0' 0" - 15 1' 1" , ti-l face usor dar daca ii dai 36 25' 15" -23 30' 25" diferenta imi da de 7 58' 29" in loc de 12 54' 50". Cred ca nu este suficient de bun long int si operatia sa pe long int (adica ldiv). Ce sfaturi mi-ati putea da?

 

Ai gresit modul de transformare al rezultatului in grade.

Rezultatul trebuie impartit la 3600 - partea intreaga sunt gradele. Partea zecimala se inmulteste cu 60-partea intreaga sunt minutele, partea zecimala se inmulteste cu 60 rezultatul sunt secundele

Editat de -altul

Partajează acest post


Link spre post
Distribuie pe alte site-uri

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum

×