Pagini: 1 2 3 [4] 5 6   În jos
  Imprimă  
Ajutor Subiect: 001 CMMDC  (Citit de 78623 ori)
0 Utilizatori şi 2 Vizitatori pe acest subiect.
voinicel
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #75 : Mai 05, 2010, 20:13:34 »

Am facut programul in felul urmator:

Cod:
#include<fstream>
using namespace std;
int cmmdc(int a, int b){
if (a%b==0){
return b;}
else{
return cmmdc(b,a%b);}}
int main(){
long a,b;
ifstream in("cmmdc.in");
ofstream out("cmmdc.out");
in>>a;
in>>b;
if (cmmdc(a,b)<=30000){
out<<cmmdc(a,b);
if (cmmdc(a,b)==1){out<<"0";}}
out.close();
in.close();
return 0;}

Ce este gresit? Brick wall Read This! sad Fool

[editat de moderator] foloseste tag-ul "code" cand postezicod pe forum.
« Ultima modificare: Mai 05, 2010, 21:33:13 de către Sima Cotizo » Memorat
mathboy
Moderatori infoarena
Nu mai tace
*****

Karma: 150
Deconectat Deconectat

Mesaje: 259



Vezi Profilul
« Răspunde #76 : Mai 05, 2010, 20:25:13 »

Pentru ca atunci cand cmmdc (a, b) este 1 tu afisezi mai intai 1, apoi 0. Corect ar fi sa afisezi doar 0.
Memorat
adrian.m
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #77 : Decembrie 09, 2010, 13:26:34 »

Mda, same problem. 50 puncte pentru perfectiune =).
Np!
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #78 : Decembrie 09, 2010, 13:49:10 »

Vezi ca atunci cand cmmdc e 1 afisezi 0.
Memorat
adrian.m
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #79 : Decembrie 09, 2010, 20:33:20 »

Aaa, caz particular ?Very Happy
Memorat
mathboy
Moderatori infoarena
Nu mai tace
*****

Karma: 150
Deconectat Deconectat

Mesaje: 259



Vezi Profilul
« Răspunde #80 : Decembrie 09, 2010, 21:12:31 »

De fapt scrie in enunt:
Citat
pe prima linie: cel mai mare divizor comun pentru a si b. Daca a si b sunt numere prime intre ele, atunci se va tipari 0
Memorat
alex94
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #81 : Martie 07, 2011, 20:24:04 »

eu asha am facuto si asha cred cae cel mai simplu:

Cod:
#include<iostream.h>
void cmmdc();
int main()
{
cmmdc();
return 0;
}
void cmmdc()
{
int a,b,n,i;
cout<<"n=";
cin>>n;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
for(i=n;i>=1;i--)
if(a%i==0 && b%i==0)
break;
cout<<"Cmmdc al a si b este:"<<i;
}
   
« Ultima modificare: Martie 08, 2011, 03:09:34 de către FMI - Paul-Dan Baltescu » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #82 : Martie 07, 2011, 21:16:04 »

Pune-ti codul intre tagurile code, si in al doilea rand nu trebuie citit de la tastatura si cu .... chestiile acelea de afisat, trebuie citit din fisier. Smile
Memorat
alex94
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #83 : Martie 15, 2011, 18:25:43 »

Varianta mea mi se pare cea mai usoara si nu include tot felul de algoritmi si si merge testatio daca vreti:
#include<iostream>
using namespace std;
int main()
{
   int a,b,i,n;
   cout<<"Dati n=";
   cin>>n;
   cout<<"Dati a=";
   cin>>a;
   cout<<"Dati b=";
   cin>>b;
   for(i=n;i>=1;i--)
      if(a%i==0 && b%i==0)
         break;
   cout<<endl;
   cout<<"CMMDC al"<<" "<<a<<" "<<"si"<<" "<<b<<" "<<"este"<<" "<<i;
   return 0;
}
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #84 : Martie 15, 2011, 19:10:32 »

In primul rand nu inteleg de ce ai nevoie de 3 numere cand tu vrei sa calculezi cmmdc-ul a 2 numere :-" (deci ai o greseala in gandire aici).
In al doilea rand algoritmul e foarte ineficient. Daca incerci sa calculezi cmmdc-ul a nr destul de mari algoritmul tau va face foarte multe operatii si va dura foarte mult. Nu folosim algoritmi complicati doar ca se ne aflam in treaba sau ca sa ne dam noi mari, ci pentru ca sunt mai rapizi.
Memorat
Tux2Nicolae
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #85 : Martie 18, 2011, 23:20:09 »

Norok baeti ea spuneti si mie unde e greseala aici ? eu sunt din moldova noi invatam pascalul cu c++ de aceia va rog sa nu ma criticati tare Very Happy sunt incepator Smile

#include <stdio.h>
int main()
{
   long int a,b,c,i;
   FILE *f1;
   FILE *f2;
   f1=freopen("cmmdc.in","r",stdin);
   f2=freopen("cmmdc.out","w",stdout);
   fscanf(f1,"%d %d",&a,&b);
    i=1;
    do {
       if ((a % i==0) and (b % i==0)){c=i;}
       i++;
    }
   while((a!=i+1) and (b!=i+1));
      if (c==1) c=0;
   fprintf(f2,"%d\n",c);
    fclose(f1);
    fclose(f2);
   return 0;
}
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #86 : Martie 19, 2011, 04:35:14 »

In primul rand am impresia ca pe testul 4 8 algoritmul tau o sa dea 2 (nu iei in calcul ca cmmdc poate fi chiar unul dintre numere). De asemenea algoritmul tau e ineficient. Pentru o rezolvare eficienta cauta algoritmul lui Euclid.
Memorat
Tux2Nicolae
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #87 : Martie 19, 2011, 11:35:37 »

devilkind ... Iti multumesc foarte mult Smile Eu defapt am luat in consideratie si daca este una dintre cifre, doar ca am gresit putin in loc sa pun while((a!=i-1) and (b!=i-1)); am pus while((a!=i+1) and (b!=i+1)); Mersi mult am vazut unde este greseala privind algoritmul cred ca stiu o ideie mai buna doar ca trebu mai multe instructiuni de scris, adica daca cea mai mare cifra din cele doua este de exemplu 12 voi face un ciclu care voi cauta pina la 12/2 si daca se divid ambele numere de exemplu cu 2 si cu 3 inseamna ca se divid si cu 6 Smile
Memorat
DaNutZ2UuU
Strain


Karma: -7
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #88 : Septembrie 28, 2011, 15:24:19 »

Eu l-am rezolvat asa:

Cod:
#include<fstream>
using namespace std;
ifstream fin("cmmdc.in");
ofstream fout("cmmdc.out");
int main()
{int a ,b, r;
fin>>a>>b;
while(a%b!=0)
{r=a%b;
a=b; b=r;
}
if(b==1)fout<<"0";
else
fout<<b;
fin.close();
fout.close();
return 0;
}

si iau 100 puncte Very Happy


1. Foloseste tag-ul [ code ] [/ code ] (fara spatii) cand mai postezi cod.
2. Care e utilitatea postului tau?
« Ultima modificare: Septembrie 28, 2011, 18:43:58 de către FMI - Paul-Dan Baltescu » Memorat
CosminRusu
De-al casei
***

Karma: 77
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« Răspunde #89 : Octombrie 06, 2011, 15:07:15 »

De ce e 0 puncte?? Angry Angry Angry
Memorat
razvan242
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #90 : Noiembrie 08, 2011, 17:40:38 »

Salut ! uite ce am facut eu!..:
Cod:
#include<fstream>
using namespace std;
ifstream fin("cmmdc.in");
ofstream fout("cmmdc.out");
int main()
{
int a,b,r,c;
fin>>a>>b;
while(r!=0)
{
r=a%b;
a=b;
b=r;
}
c=a;
if(c==1)c=0;
fout<<c;
return 0;
}
Nu stiu ce e gresit , si as vrea o parere de la voi. Smile.Tin sa precizez ca sunt in clasa a 6-a[incepator].. Numai bine!
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #91 : Noiembrie 08, 2011, 20:03:28 »

Banuiesc (nu stiu sigur) ca de la asta se trage : int a,b,r,c; Aceste variabile locale declarate o sa dea valori lui r aiurea, si while (r != 0) s-ar putea sa nu se executa, r fiind 0. Pune in loc de aia b != 0 (sau b > 0), e tot aia, ar trebui sa mearga.
Memorat
caen1
Client obisnuit
**

Karma: 22
Deconectat Deconectat

Mesaje: 75



Vezi Profilul
« Răspunde #92 : Noiembrie 08, 2011, 20:59:07 »

Sau poti sa faci un do/while in loc de while-ul tau. Il va executa cel putin o data, deci r va fi modificat inainte de evaluare.
Memorat
razvan242
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #93 : Noiembrie 09, 2011, 20:44:45 »

Multumesc frumos , Spider! Acum am luat si eu 100 de puncte cu indicatia ta. Smile. Merci inca o data.
Memorat
Trixer
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #94 : Ianuarie 17, 2012, 20:46:57 »

Daca primiti 50 pct si sunteti siguri de rezolvare s-ar putea sa fie vorba de faptul ca daca cmmdc=1 atunci in fisier trebuie scris 0 si nu 1...a trebuit sa trimit problema de 3 ori ca sa vad asta...desi e aiurea ca 1 e si el divizor
Memorat
crysty2pin
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #95 : Martie 20, 2012, 21:24:50 »

Zau asa?! Iti bati joc de mine?! M-am chinuit sa fac problema si imi spune evaluare completa 0 puncte... Pana la urma fisierul sursa este cel de tipul .CPP nu?
Memorat
laurion
De-al casei
***

Karma: -41
Deconectat Deconectat

Mesaje: 102



Vezi Profilul
« Răspunde #96 : Martie 20, 2012, 21:31:45 »

Zau asa?! Iti bati joc de mine?! M-am chinuit sa fac problema si imi spune evaluare completa 0 puncte... Pana la urma fisierul sursa este cel de tipul .CPP nu?

Da, fisierul .cpp trebuie trimis. Greseala ta este
Cod:
g<<"CMMDC="<<CMMDC(a,b);
nu mai afisa si "CMMDC=", doar raspunsul:
Cod:
g<<CMMDC(a,b);
Memorat
crysty2pin
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #97 : Martie 20, 2012, 21:40:06 »

OK mersi mult.
Memorat
peti
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #98 : Septembrie 09, 2012, 12:56:02 »

Eu primesc 100 puncte cu algoritmul lui Euclid. http://en.wikipedia.org/wiki/Euclidean_algorithm
Memorat
seby
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #99 : Septembrie 13, 2012, 09:30:02 »

Am probleme cu CMMDC. Am incercat mai multe solutii si tot 50 de pct am primit Huh

Later edit: Winner 1st place Merge orice metoda. Aveti grija cand sunt prime! Trebuie afisat 0 Winner 1st place
« Ultima modificare: Septembrie 21, 2012, 01:36:15 de către Andrei Grigorean » Memorat
Pagini: 1 2 3 [4] 5 6   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines