Ştiri:

Vă rugăm să citiţi Regulamentul de utilizare a forumului Scientia în secţiunea intitulată "Regulamentul de utilizare a forumului. CITEŞTE-L!".

Main Menu

cmmdc

Creat de foton01, Ianuarie 15, 2011, 04:02:21 PM

« precedentul - următorul »

0 Membri şi 1 Vizitator vizualizează acest subiect.

foton01

Salut!
Am facut programul:

#include <iostream.h>
int main()
{int a,b,r;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
if(a>b)
{r=a;
a=b;
b=r;}
while(a!=0)
{r=a%b;
a=b;
b=r;}
cout<<a;}


Imediat dupa ce introduc valorile (a;b) programul se intrerupe. Ma puteti ajuta va rog frumos?
Mesajul ce apare imediat dupa intrerupere spune " daca esti in mijlocul a ceva, informatiile cu care lucrezi au fost pierdute".

Multumesc!

Adi

#1
Fiind un "int main", ar trebui sa inchei cu return 0, nu?

De ce ai pus titlul "cmmdc"? Trebuie sa pui titluri sugestive, complete, care sa ajute oamenii sa gaseasca pe google acest post.

Update: am rulat programul si imi zice asa:

<nbay03.fnal.gov> ./a.out
a=3
b=3
Floating exception


Tie ce mesaj iti da? Poate aia trebuie sa faca programul, sa se intrerupa, in sensul ca a ajuns la final in mod corect. Tu ce vrei sa faca programul tau? Dupa cum vezi, tu ai zis ca daca a e mai mare ca b sa faca ceva, dar daca a e egal cu b sau a mai mic decat b sa nu faca nimic.

Apoi acel while cred ca trebuie sa fie un if.
Pagina personala: http://adrianbuzatu.ro

Quantum

Banuiesc ca cmmdc este cel mai mare divizor comun. Atunci programul ar arata ceva de genul asta:
#include <iostream>
using namespace std;
int a=0,b=0;

int main()

     cout<<"a=";
     cin>>a;
     cout<<"b=";
     cin>>b;
  while (a != b) {
    if (a > b)
      a -= b;
    else
      b -= a;
  }
         cout<<"\ncel mai mare divizor comun=";
         cout<<a;     

         cin>>a; //asteapta pt. a vedea rezultatul 
     return 0;
}

Adi

Ah, cel mai mare divizor comun, acum inteleg de ce acel while ...
Pagina personala: http://adrianbuzatu.ro

b12mihai

Citat din: foton01 din Ianuarie 15, 2011, 04:02:21 PM
Salut!
Am facut programul:

#include <iostream.h>
int main()
{int a,b,r;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
if(a>b)
{r=a;
a=b;
b=r;}
while(a!=0)
{r=a%b;
a=b;
b=r;}
cout<<a;}


Imediat dupa ce introduc valorile (a;b) programul se intrerupe. Ma puteti ajuta va rog frumos?
Mesajul ce apare imediat dupa intrerupere spune " daca esti in mijlocul a ceva, informatiile cu care lucrezi au fost pierdute".

Multumesc!

Salut. Banuiesc ca esti clasa a noua si asa ceva va invata la informatica. Ai idee ce limbaj "va spune" ca va invata? Pentru ca nu prea e C++, desi ei spun ca e C++...V-a invatat si de do .. while "statement"? (Vezi aici la the do while loop: http://cplusplus.com/doc/tutorial/control/)

Ceea ce iti trebuie tie este algoritmul lui Euclid, si iata o varianta corecta a lui (in C - inlocuiesti tu scanf - citirea, cu cin si afisarea - printf - cu cout, am incredere ca esti destept, la fel directivele de preprocesare #include - cu ce iti trebuie):


#include<stdio.h>
#include<conio.h> /* foloseste asta daca esti in DEV sau Borland si vrei sa vezi rezultatul cum trebuie, vei avea nevoie de functia getch(); */
int main()
{
int a,b,r;
scanf("%d%d", &a, &b);
do { r=a%b;
       a=b;
       b=r; } while(r!=0);
printf("%d \n", a);

getch(); /* prototipul functiei getch(); se afla in conio.h */
return 0;
}


Sau mai exista algoritmul prin scaderi repetate, pe care ti l-a prezentat Qunatum mai sus.

Tu ai folosit algoritmul lui Euclid si problema ta era ca trebuia sa initializezi pe r cu o valoare (tu doar faci o interschimbare pe acolo, care e complet inutila si aiurea, mai exact liniile de cod citate mai jos) pentru ca sa iti intre in bucla while. Eu am folosit do while pentru a nu fi nevoie sa il initializez pe r, tocmai pentru ca am nevoie sa il calculez inainte de a intra cumva in bucla:

Citat
if(a>b)
{r=a;
a=b;
b=r;}

Sper ca au fost clare explicatiile, desi s-ar putea sa fi fost un pic prea "stiintific" pentru clasa a noua.

Ca si compilator, folosesti cumva DEV CPP? E foarte bun pentru lucrul sub Windows, dupa parerea mea. Evita Borland sau TurboC/TurboC++ ...
Fiecare are scopul lui in lumea asta nebuna.

laurentiu

Da si eu i-as recomanda sa-si instaleze Linux ca sistem de operare si sa foloseasca compilatorul gcc:D
Am glumit!:))