Bună seara,
Probleme:
1. - Să se întocmească un program de calcul pentru unde * și ?
2. - Să se întocmească un program de calcul pentru unde * și ?
Toate cele bune,
Integrator
Programe de calcul
-
- guru
- Mesaje: 1524
- Membru din: 16 Ian 2011, 08:32
Re: Programe de calcul
Bună dimineața,
Adaug că cele două programe de calcul vor fi întocmite în special în "C++" și după aceea în alte limbaje.Este evident că programele de calcul se vor întocmi doar pentru rădăcina principală a lui !
Toate cele bune,
Integrator
Adaug că cele două programe de calcul vor fi întocmite în special în "C++" și după aceea în alte limbaje.Este evident că programele de calcul se vor întocmi doar pentru rădăcina principală a lui !
Toate cele bune,
Integrator
-
- guru
- Mesaje: 1524
- Membru din: 16 Ian 2011, 08:32
Re: Programe de calcul
Bună dimineața,A_Cristian scrie: ↑12 Aug 2018, 08:47Nu am absolut nici un interes sa "rezolv" probleme didactice. In plus, avand in vedere ca nu exista R in C++, este bine sa specificati de ce aproximatii aveti nevoie. Un elev bunicel, ar putea face primul subpunct folosind tipul "float" sau double?
Vreți sa spuneți că nu pot scrie de exemplu în C++?Mi-ajunge aproximația pe care o dă C++.Cu instrucțiunea "float" am încercat dar nu știu cum să obțin ca rezultat al radicalului , de exemplu unde ....
Numai bine,
Integrator
-
- guru
- Mesaje: 1975
- Membru din: 23 Feb 2015, 17:15
Re: Programe de calcul
float este un tip de date in care pot fi stocate "numere reale". N-am stat sa calculez, dar este foarte posibil ca 3.54 sa nu poata fi reprezentat exact.
Pentru primul punct, va recomand sa folositi coordonate polare si functia pow.
Probabil acelasi lucru l-ati putea folosi si pentru al doilea, dar ma tem ca nu am bazele matematice necesare si este o simpla speculatie din partea mea.
PS: Exista clasa complex in C++, dar nu pare sa va ajute prea mult, avand doar cateva operatii aritmetice implementate.
Pentru primul punct, va recomand sa folositi coordonate polare si functia pow.
Probabil acelasi lucru l-ati putea folosi si pentru al doilea, dar ma tem ca nu am bazele matematice necesare si este o simpla speculatie din partea mea.
PS: Exista clasa complex in C++, dar nu pare sa va ajute prea mult, avand doar cateva operatii aritmetice implementate.
-
- guru
- Mesaje: 1524
- Membru din: 16 Ian 2011, 08:32
Re: Programe de calcul
Bună dimineața,A_Cristian scrie: ↑14 Aug 2018, 10:16float este un tip de date in care pot fi stocate "numere reale". N-am stat sa calculez, dar este foarte posibil ca 3.54 sa nu poata fi reprezentat exact.
Pentru primul punct, va recomand sa folositi coordonate polare si functia pow.
Probabil acelasi lucru l-ati putea folosi si pentru al doilea, dar ma tem ca nu am bazele matematice necesare si este o simpla speculatie din partea mea.
PS: Exista clasa complex in C++, dar nu pare sa va ajute prea mult, avand doar cateva operatii aritmetice implementate.
Iată un program făcut de mine:
1 #include <iostream>
2 #include <cmath>
3 using namespace std ;
4
5 int main ()
6 {
7 cout << "Radacina principala de indice n real dintr-un numar real " << endl ;
8 float n , N , Z , ReZ, ImZ , pi=3.14159 , i ;
9 cout << "n=" ; cin>> n ;
10 cout << "N=" ; cin>> N ;
11 if ( N>=0 ) {
12 Z=pow(N,(1.0/n)) ;
13 cout << " Z= " << Z ;
14 }
15 else if ( N<0 ) {
16 Z=ReZ+ImZ*i ; Rez=pow(-N,(1.0/n))*cos(pi/n) ; Imz=pow(-N,(1.0/n))*sin(pi/n) ;
17 cout << "ReZ=" << ReZ ;
18 cout << " ; ImZ=" << ImZ ;
19 cout << " ; Z=ReZ+i ImZ" << endl ;
20 }
21 return 0 ;
22 }
------------------------------------------------
Am verificat programul meu cu programul "WolframAlpha" si este corect....dar pentru cazul și alte cazuri nedefinite trebuie să mai scriu niște instrucțiuni...
Cum pot să scriu rezultatul final , de exemplu ?
Ce instrucțiune trebuie scrisă pentru a relua date le inițial ale lui și făra a se închide ecranul?
Mulțumesc mult!
Toate cele bune,
Integrator
-
- guru
- Mesaje: 1975
- Membru din: 23 Feb 2015, 17:15
Re: Programe de calcul
Din pacate programelul postat de dumneavoastra nu compileaza. In afara de faptul ca sunt variabile neinitializate (erori de logica), sunt si altele care nu sunt declarate (erori de compilare).
Si tot din pacate, nu am timpul necesar acum pentru a posta un cod corect. fromCartesian nu este complet corecta si n-am verificat deloc metoda pow
Insa macar aveti un framework cu care sa lucrati. Poate voi gasi niste timp maine, dar slabe sanse.
Avand in vedere ca este un programel de tip consola, este de dorit sa-l rulati din consola. Exisa metode de-al face sa nu se inchida atunci cand este rulat direct din mediul grafic, dar trebuie sa mai sap pentru cea mai buna metoda.
PS: Apreciez faptul ca v-ati inhamat la o astfel de treaba si voi incerca sa va acord sprijin in cazul in care veti avea nevoie si eu voi avea timp
Si tot din pacate, nu am timpul necesar acum pentru a posta un cod corect. fromCartesian nu este complet corecta si n-am verificat deloc metoda pow
Insa macar aveti un framework cu care sa lucrati. Poate voi gasi niste timp maine, dar slabe sanse.
Avand in vedere ca este un programel de tip consola, este de dorit sa-l rulati din consola. Exisa metode de-al face sa nu se inchida atunci cand este rulat direct din mediul grafic, dar trebuie sa mai sap pentru cea mai buna metoda.
Cod: Selectaţi tot
#define _USE_MATH_DEFINES
#include<iostream>
#include <cmath>
using namespace std;
class complex {
double absoluteValue_;
double argument_;
public:
complex(double absoluteValue, double argument) : absoluteValue_(absoluteValue), argument_(argument) {}
complex pow(double power) const {
double absoluteValue = ::pow(absoluteValue_, power);
double argument = argument_ * power;
return complex(absoluteValue, argument);
}
double real() const {
return absoluteValue_ * cos(argument_);
}
double imaginary() const {
return absoluteValue_ * sin(argument_);
}
static complex fromCartesian(double a, double b) {
double absoluteValue = sqrt(a*a + b * b);
double argument = 0;
if (a != 0)
argument = atan(b / a);
else {
if (b > 0)
argument = M_PI / 2;
else
argument = 3 * M_PI / 2;
}
return complex(absoluteValue, argument);
}
friend std::ostream& operator<< (std::ostream& stream, const complex& number){
double real = number.real();
double imaginary = number.imaginary();
if (real == 0 && imaginary == 0) {
stream << "0";
} else if (real != 0) {
stream << real;
if (imaginary > 0)
stream << "+" << imaginary << "*i";
if (imaginary<0)
stream << imaginary << "*i";
}
else {
stream << imaginary <<"*i";
}
return stream;
}
};
int main()
{
complex c1 = complex::fromCartesian(1, 0);
complex c2 = complex::fromCartesian(0, 1);
complex c3 = complex::fromCartesian(-1, 0);
complex c4 = complex::fromCartesian(0, -1);
complex c5 = complex::fromCartesian(1, 1);
complex c6 = complex::fromCartesian(-1, 1);
complex c7 = complex::fromCartesian(-1, -1);
complex c8 = complex::fromCartesian(1, -1);
std::cout << c1 << std::endl;
std::cout << c2 << std::endl;
std::cout << c3 << std::endl;
std::cout << c4 << std::endl;
std::cout << c5 << std::endl;
std::cout << c6 << std::endl;
std::cout << c7 << std::endl;
std::cout << c8 << std::endl;
return 0;
}
-
- guru
- Mesaje: 1524
- Membru din: 16 Ian 2011, 08:32
Re: Programe de calcul
Bună dimineața,A_Cristian scrie: ↑15 Aug 2018, 12:42Din pacate programelul postat de dumneavoastra nu compileaza. In afara de faptul ca sunt variabile neinitializate (erori de logica), sunt si altele care nu sunt declarate (erori de compilare).
Si tot din pacate, nu am timpul necesar acum pentru a posta un cod corect. fromCartesian nu este complet corecta si n-am verificat deloc metoda pow
Insa macar aveti un framework cu care sa lucrati. Poate voi gasi niste timp maine, dar slabe sanse.
Avand in vedere ca este un programel de tip consola, este de dorit sa-l rulati din consola. Exisa metode de-al face sa nu se inchida atunci cand este rulat direct din mediul grafic, dar trebuie sa mai sap pentru cea mai buna metoda.
PS: Apreciez faptul ca v-ati inhamat la o astfel de treaba si voi incerca sa va acord sprijin in cazul in care veti avea nevoie si eu voi avea timpCod: Selectaţi tot
#define _USE_MATH_DEFINES #include<iostream> #include <cmath> using namespace std; class complex { double absoluteValue_; double argument_; public: complex(double absoluteValue, double argument) : absoluteValue_(absoluteValue), argument_(argument) {} complex pow(double power) const { double absoluteValue = ::pow(absoluteValue_, power); double argument = argument_ * power; return complex(absoluteValue, argument); } double real() const { return absoluteValue_ * cos(argument_); } double imaginary() const { return absoluteValue_ * sin(argument_); } static complex fromCartesian(double a, double b) { double absoluteValue = sqrt(a*a + b * b); double argument = 0; if (a != 0) argument = atan(b / a); else { if (b > 0) argument = M_PI / 2; else argument = 3 * M_PI / 2; } return complex(absoluteValue, argument); } friend std::ostream& operator<< (std::ostream& stream, const complex& number){ double real = number.real(); double imaginary = number.imaginary(); if (real == 0 && imaginary == 0) { stream << "0"; } else if (real != 0) { stream << real; if (imaginary > 0) stream << "+" << imaginary << "*i"; if (imaginary<0) stream << imaginary << "*i"; } else { stream << imaginary <<"*i"; } return stream; } }; int main() { complex c1 = complex::fromCartesian(1, 0); complex c2 = complex::fromCartesian(0, 1); complex c3 = complex::fromCartesian(-1, 0); complex c4 = complex::fromCartesian(0, -1); complex c5 = complex::fromCartesian(1, 1); complex c6 = complex::fromCartesian(-1, 1); complex c7 = complex::fromCartesian(-1, -1); complex c8 = complex::fromCartesian(1, -1); std::cout << c1 << std::endl; std::cout << c2 << std::endl; std::cout << c3 << std::endl; std::cout << c4 << std::endl; std::cout << c5 << std::endl; std::cout << c6 << std::endl; std::cout << c7 << std::endl; std::cout << c8 << std::endl; return 0; }
Programul proiectat de mine funcționează perfect....Faceți compilarea pentru opțiunea ....32-bit...
1) Cum fac să nu se închidă programul și să ceară noi date inițiale?
2) Dvs. cum ați proiecta programul propus de mine?
Mulțumesc mult!
Toate cele bune,
Integrator