Jump to content
Begedeu

Un mic programel in c++

Recommended Posts

Posted (edited)

Mai erau de adaugat o groaza de algoritmi dar ajunge atat.

Multumesc pentru ajutor @nedo

#include<iostream>
#include<conio.h>

#include<math.h>

#include<vector>

#include<string>

using namespace std;

int main(){

int alege,prog=0,n,test=0,test1,test2=1,w,z,r;

float a,b,c,x1,x2,delta,x,real,img;

char alege1,ec;

string input;

char choise = ' ';

restart:

cout <<"1.Calculator\n";

cout <<"2.Ecuatia de gradul intai\n";

cout <<"3.Ecuatia de gradul 2\n";

cout <<"4.Progresii\n";

cout <<"5.Cmmdc\n";

cout <<"6.Exit\n";

cout <<"Alege (1,2,3..6): ";cin>>alege;

switch(alege){

case 1 : cout <<"\nFelicitari , ai ales 'Calculatorul'\n\n";

operatii:

cout <<"a)Inmultire\n";

cout <<"b)Impartire\n";

cout <<"c)Adunare\n";

cout <<"d)Scadere\n";

cout <<"Alege operatia dorita: ";cin>>alege1;

switch(alege1){

case 'a' : cout <<"Ai ales operatia de inmultire calculeaza acum\n";

cout <<"a=";cin>>a;

cout <<"b=";cin>>b;

cout <<"Rezultatul este " <<a*b<<endl;

break;

case 'b' : cout <<"Ai ales operatia de impartire calculeaza acum\n";

cout <<"a=";cin>>a;

cout <<"b=";cin>>b;

cout <<"Rezultatul este " <<a/b<<endl;

break;

case 'c' : cout <<"Ai ales operatia de adunare calculeaza acum\n";

cout <<"a=";cin>>a;

cout <<"b=";cin>>b;

cout <<"Rezultatul este " <<a+b<<endl;

break;

case 'd' : cout <<"Ai ales operatia de scadere calculeaza acum\n";

cout <<"a=";cin>>a;

cout <<"b=";cin>>b;

cout <<"Rezultatul este " <<a-b<<endl;

break;

default : cout <<"Alegere gresita . Alege doar dintre 'a' , 'b' , 'c' si 'd'";}

break;

cout <<"\nDoresti sa revii in meniul de operatii ?[Y/N]";

choise=_getch();

if (choise == 'n')

goto operatii;

case 2 : cout <<"Felicitari , ai ales 'Ecuatia de gradul intai'\n";

cout <<"Alege tipul de ecuatie\n";

cout <<"a) ax+b=0\n";

cout <<"Alege : "; cin>>ec;

if (ec == 'a'){

cout<<"Dati valoarea lui a = ";

cin>>a;

cout<<"Dati valoarea lui b = ";

cin>>b;

if (a == 0)

if (b == 0)

cout <<"Ecuatie nedeterminata";

else cout <<"Ecuatie imposibila";

else {

x=-b/a;

cout <<"Rezultatul este: "<<x<<endl;}}

break;

case 3 : cout <<"Felicitari , ai ales 'Ecuatia de gradul doi'\n";

cout <<"a=";cin>>a;

cout <<"b=";cin>>b;

cout <<"c=";cin>>c;

delta = b*b-4*a*c;

if (a==0) cout <<"Ecuatia de gradul 1";

else

{

delta=b*b-4*a*c;

if(delta >= 0)

{

cout<<"Radacini reale: ";

x1=(-b+sqrt(delta))/(2*a);

x2=(-b-sqrt(delta))/(2*a);

cout<<"x1 = "<<x1<<" x2 = "<<x2;

}

else

{

cout<<"Radacini complexe :";

delta=-delta;

real=-b/(2*a);

img=sqrt(delta)/(2*a);

cout<<"x1 = "<<real<<" + i*"<<img<<"\n";

cout<<"x2 = "<<real<<" - i*\n"<<img;

}

}

break;

case 4 : cout <<"Felicitari , ai ales 'Progresii' , acum va trebui sa alegi tipul de progresie\n";

reset:

cout <<"a)Progresii aritmetice\n";

cout <<"b)Progresii geometrice\n";

cout <<"Alege cu 'a' sau 'b': ";cin>>choise;

if (choise == 'a')

{

cout <<"Ai ales progresiile aritmetice , poti da sirul de numere\n";

vector<float> sir;

cout <<"Adauga sirul : [apasa 0 cand ai terminat, orice alt tip de caracter va fi ignorat]\n";

do

{

cin >>input;

prog = atoi(input.c_str());// transformam in numar(daca in input e un sir de caractere, chiar si urmat de cifre, functia va returna 0)

if(prog == 0)

//prog = - 1;

continue; // iesim daca s-a introdus un sir de caractere

sir.push_back(prog);

}while (input != "0");

int dif = 0;

int difVeche = 0;

bool first = true;

bool ok = false;

for(int i = 1; i < sir.size();i++)

{

if(first)

{

dif = sir - sir[i - 1];

difVeche = dif;

first= false;

continue;

}

dif = sir - sir[i - 1];

if(dif != difVeche)

{

cout << "Sirul nu este in progresie aritmetica." << endl;

ok = false;

break;

}

ok = true;

if(ok)

cout << "Sirul este in progresie aritmetica cu ratia " <<dif<< endl;

cout <<"Sirul are " <<sir.size()<< " elemente\n";

cout <<"Doresti sa calculezi suma primilor n termeni? [Y/N] \n";

choise = getch();

if (choise == 'n')

goto reset;

else cout <<"Ce termen doresti sa calculezi? ";cin>>test;

test1=sir[0]+(sir.size()-1)*dif;

cout <<"Termenul " <<test<< " este egal cu " <<test1;

break;

}

}

if (choise == 'b')

{

cout <<"Ai ales progresiile geometrice , poti da sirul de numere\n";

vector<float> sir;

cout <<"Adauga sirul : [apasa 0 cand ai terminat, orice alt tip de caracter va fi ignorat]\n";

do

{

cin >>input;

prog = atoi(input.c_str());// transformam in numar(daca in input e un sir de caractere, chiar si urmat de cifre, functia va returna 0)

if(prog == 0)

//prog = - 1;

continue; // iesim daca s-a introdus un sir de caractere

sir.push_back(prog);

}while (input != "0");

int q = 0;

int q1 = 0;

bool first = true;

bool ok = false;

for(int i = 1; i < sir.size();i++)

{

if(first)

{

q = sir / sir[i - 1];

q1 = q;

first= false;

continue;

}

q = sir / sir[i - 1];

if(q != q1)

{

cout << "Sirul nu este in progresie geometrica." << endl;

ok = false;

break;

}

ok = true;

if(ok)

cout << "Sirul este in progresie geometrica cu ratia " <<q<< endl;

cout <<"Sirul are " <<sir.size()<< " elemente\n";

cout <<"Doresti sa calculezi suma primilor n termeni? [Y/N] \n";

choise = getch();

if (choise == 'n')

goto reset;

else cout <<"Ce termen doresti sa calculezi? ";cin>>test;

float a=pow(q , test-1); //bn = b1·qn-1

test2=sir[0]*a;

cout <<"Termenul " <<test<< " este egal cu \n" <<test2;

break;

}

}

break;

case 5 : cout <<"Felicitari ai ales 'cmmdc'\n";

cout<<"a=";cin>>w;

cout<<"b=";cin>>z;

while(w!=z)

if(w> w=w-z;

else z=z-w;

cout<<"Cmmdc : "<<z;

break;

default : cout <<"Nu exista aceasta optiune";}

goto restart;

getchar();

cin.ignore(cin.rdbuf()->in_avail() +1);

return 0;

}

 

Edited by Begedeu
wrong syntax highlight
  • Active Members
Posted

Frumos.

Urmatorul pas ar fi acela de a face cate o functie pt. fiecare operatie. Apoi, ca sa progresezi, incearca sa treci usor la programarea orientata pe obiecte.

Posted
On 2/8/2015 at 7:06 PM, Begedeu said:
b)Progresii geometrice\n

 

sa se calculeze și sa se afiseze pe ecran termenii unei progresii geometrice pentru care se citesc de la tastatura termenul inițial(t), pasul(p) și nr de termeni de afisat(n)

Guest
This topic is now closed to further replies.


×
×
  • Create New...