Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema cu o problema...  (Citit de 2334 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Patrunjel
Strain
*

Karma: -12
Deconectat Deconectat

Mesaje: 30



Vezi Profilul
« : Februarie 14, 2010, 13:54:28 »

Salutari,eu deranjez din nou...mi-a dat un prieten o problema care suna cam asa: Se citesc de la tastatura numerele a,b,c.Ordoneti crescator numerele a,b,c , in functie de numarul de divizori.
Dupa ce m-am scremut umpic,am scris asta:
Cod:
//Se citesc 3 variabile: a,b,c;Afisati-le in ordinea crescatoare a numarului de divizori
#include <iostream.h>
#include <math.h>
int main(){
int a,b,c,radical,i,nr_a,nr_b,nr_c;
nr_a=0;nr_b=0;nr_c=0;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"c=";cin>>c;
radical=static_cast<int>(sqrt(a));
for(i=2;i<=radical;i++){
if(a%i==0){
nr_a=nr_a+1;}
}
radical=static_cast<int>(sqrt(b));
for(i=2;i<=radical;i++){
if(b%i==0){
nr_b=nr_b+1;}
}
radical=static_cast<int>(sqrt(c));
for(i=2;i<=radical;i++){
if(c%i==0){
nr_c=nr_c+1;}
}
/*aici s-a terminat numararea divizorilor numerelor a,b,c
tot ce urmeaaza reprezinta ordonarea celor 3 numere,in functie de numarul de divizori*/
if(nr_a<=nr_b && nr_a<=nr_c){
cout<<c<<", "; //cica pe aceasta linie de cod ar fii eroarea...
if (nr_b <= nr_c){
cout<<b", ";
cout<<c<<", ";}
else{
cout<<c<<", ";
cout<<b<<", ";}
}
else{
if (nr_b<=nr_a && nr_b<=nr_c){
cout<<b<<", ";
if (nr_a<=nr_c){
cout<<a<<", ";
cout<<c<<", ";}
else{
cout<<c<<", ";
cout<<a<<", ";}}
if (nr_c<=nr_a && nr_c<=nr_b){
cout<<c<<", ";
if (nr_a<=nr_b){
cout<<a<<", ";
cout<<b<<", ";}
else{
cout<<b<<", ";
cout<<a<<", ";}
}
}
return 0;}


insa de aici in colo nu am mai avut ce-i face...de la undeva la 8 erori,rusie sa-mi fie ca scriam (nr_a<=nr_b) && (nr_a<=nr_c) ,in loc de (nr_a<=nr_b && nr_a<=nr_c),insa omu' din greseli invata Very Happy,am coborat la o eroare ,am bagat si niste static_cast-uri (sa scap de o parte din warninguri,ca ma ofticau)...insa acea eroare care a ramas imi cam da batai de cap...imi poate spune cineva ce am gresit?
PS: Am precizat pe cod la ce linie imi indica, compilatorul eroarea ,care suna cam asa : syntax error before string constant ...pur si simplu nu ii pot da de capat...
PPS:Tin sa il rog pe cel care doreste sa ma ajute,sa nu modifice sursa prea tare,ca sa pot intelege,fiindca asta e si ideea...
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #1 : Februarie 14, 2010, 14:04:18 »

Tin sa te anunt ca eroarea nu-i acolo ci cu vreo 2 linii mai jos
Cod:
cout<<b", "; //aici e eroarea
Corect ii
Cod:
cout<<b<<", ";
Ai putea folosi o functie care sa determine divizori unui numar ( daca tot cautai "probleme cu functii" Tongue )
ps: Nu-i mai simplu radical=(int)sqrt(...) decat sa scri static_cast<int> ?
Memorat
Patrunjel
Strain
*

Karma: -12
Deconectat Deconectat

Mesaje: 30



Vezi Profilul
« Răspunde #2 : Februarie 14, 2010, 15:08:49 »

multumesc mult Very Happy dupa ce am postat mi-am dat seama ca ar merge cu funtii,insa m-am gandit sa o las asa,daca tot era postata in forma asta Very Happy oricum,in 15 minute o fac cu functie...si multumesc mult pentru gasirea erorii...eu m-am dat cu capu de tastatura vro 20 de minute,si tot nu am gasit nimic Very Happy
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #3 : Februarie 14, 2010, 18:23:57 »

Tin sa te anunt ca eroarea nu-i acolo ci cu vreo 2 linii mai jos
Cod:
cout<<b", "; //aici e eroarea
Corect ii
Cod:
cout<<b<<", ";
Ai putea folosi o functie care sa determine divizori unui numar ( daca tot cautai "probleme cu functii" Tongue )
ps: Nu-i mai simplu radical=(int)sqrt(...) decat sa scri static_cast<int> ?

floor(sqrt(...)). Cast-ul la int iti rotunjeste la cel mai apropiat intreg.
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #4 : Februarie 14, 2010, 19:06:05 »

vrei sa zici ca pentru 5.66674 ar rontuji la 6 (cast-ul) ? Nu, tot la 5 Smile
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #5 : Februarie 14, 2010, 19:17:59 »

Tin sa te anunt ca eroarea nu-i acolo ci cu vreo 2 linii mai jos
Cod:
cout<<b", "; //aici e eroarea
Corect ii
Cod:
cout<<b<<", ";
Ai putea folosi o functie care sa determine divizori unui numar ( daca tot cautai "probleme cu functii" Tongue )
ps: Nu-i mai simplu radical=(int)sqrt(...) decat sa scri static_cast<int> ?

floor(sqrt(...)). Cast-ul la int iti rotunjeste la cel mai apropiat intreg.

Castul la int te scapa de partea fractionara.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #6 : Februarie 14, 2010, 20:53:26 »

Mdea, asa e. Nu stiu de ce aveam eu impresia ca e cum am zis. N-am prea incercat sa fac cast la int asa. Foloseam floor sau ceil. Oricum, nu sunt sigur ca e standard treaba asta. Tin minte ca o data, acu ceva timp imi busea la o faza de genul.
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #7 : Februarie 14, 2010, 21:14:15 »

Stiu ca exista un standard pentru conversia floating point -> int.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
rgrig
De-al casei
***

Karma: 46
Deconectat Deconectat

Mesaje: 144



Vezi Profilul WWW
« Răspunde #8 : Februarie 22, 2010, 14:37:16 »

Cast la int rotunjeste catre zero.
Vezi 6.3.1.4 (pagina 43): http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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