Jump to content

Recommended Posts

Posted

Cred ca pana la urma am sa-l intreb pe prof joia asta..Ce am facut eu dimineata asta e ce ne-a aratat si hiey mai sus...De la dreapta sa stanga se iau cifrele cu %10, da de la stanga la dreapta :-? ? Poate trebuie numarul scris invers si dupa luat fiecare cifra? Adica la 1234 sa fie scris 4321 si calculatorul le lua pe 2 si 4 acuma. La 1234 le ia pe 3 si 1 dupa programul lui hiey.Nu stiu daca ati inteles ce vreau sa zic.

Posted

Voilà!    

#include <iostream>
using namespace std;
int main()
{ unsigned nr,s=0,p=1,cf,c=0,nr_cifre=0,temp; //declar variabilele
cout<<"Introduceti numarul:";cin>>nr; //introduc numarul
temp=nr; //lui "temp" ii atribui valoarea numarului introdus
while(temp!=0){nr_cifre++;temp=temp/10;} //stabilesc cate cifre are numarul introdus.
if(nr_cifre%2!=0) //daca numarul de cifre este impar, intru in programul lui hiey
{
    while(nr!=0)
    {
     c++;
     if(c%2==0)
     {
         cf=nr%10;
         s=s+cf;
         p=p*cf;
     }
     nr=nr/10;
    }
}
cout<<s<<endl<<p;


  return 0;
}

Dar da, functioneaza doar daca numarul de cifre este impar, programul este structurat putin dezordonat, l-am scris acum la ora asta, me-a luat 10 min.

Intrebarea este, ce fac daca are un nr par de cifre?Putea sa sar peste if(nr_cifre%2!=0) daca aflam "inversul" numarului introdus si foloseam ce a zis hiey? Daca da, cum aflu "inversul"?   

 

EDIT: sunt mai destept ca niciodata seara asta, am gasit si cum sa calculez inversul unui nr. 

#include <iostream>
using namespace std;
int main()
{
    unsigned n,c,inversul;
    cout<<"Introduceti numarul:";cin>>n;
    inversul=n%10;
    n=n/10;
    while(n!=0)
    {
    c=n%10;
    inversul=inversul*10+c;
    n=n/10;
    }
    cout<<inversul;
    return 0;
}

E ceva facut la repezeala, da e bine..

Posted

pai ai toate informatiile deja..

ai 2 cazuri : numarul de cifre par sau impar

 

1) daca numarul de cifre e impar, poti folosi algoritmul acela pentru ca pozitiile pare/impare vor fi aceleasi, indiferent din ce parte pornesti.

 

de exemplu in numarul 12345 .   2 si 4 sunt pe pozitii pare din orice parte ai citii numarul. Deci aici nu avem probleme.

 

2) daca numarul de cifre e par, algoritmul ramane in mare acelasi, doar ca paritatea cifrei va fi exact invers daca numaram din dreapta.

Deci, tot ce trebuie sa faci, e sa cauti numere pe pozitii impare pornind de la dreapta.

 

de exemplu, numarul 123456.   are un numar par de cifre.  2 4 6 sune pe pozitii pare daca numaram de la stanga la dreapta. Dar, daca parcurgem de la dreapta la stanga, ele sunt pe pozitii impare. Deci, tot ce tre sa faci in acest caz e sa faci suma si produsul numerelor de pe pozitii impare (numarand de la dreapta..pentru ca tu asta faci in algoritmul tau) 

love is a verb
Love is a doing word

Posted

Am inteles ce vrei sa zici ^. 

Cred totusi ca mai repede aflu inversul si continui programul, nu ca avea varianta nu ar functiona, or sa o scriu si pe aia, dar maine cel mai probabil, m-a doborat oboseala si ma pun la somnic :)

#include <iostream>
using namespace std;
int main()
{
    unsigned n,c,inversul,a=0,s=0,p=1;
    cout<<"Introduceti numarul:";cin>>n;
    inversul=n%10;
    n=n/10;
    while(n!=0)
    {
        c=n%10;
        inversul=inversul*10+c;
        n=n/10;
    }
    n=inversul;
    while(n!=0)
    {
     a++;
     if(a%2==0)
     {
      c=n%10;
      s=s+c;
      p=p*c;
     }
     n=n/10;
    }
   cout<<"Suma cifrelor care ocupa pozitiile pare este:"<<s<<endl;
   cout<<"Produsul cifrelor care ocupa pozitiile pare este:"<<p;
   return 0;

}

Posted

3. Se introduc de la tastatură n numere. Să se afiseze cea mai mare cifră a fiecărui număr.
(exp : n=3, a={123, 371, 459} => {3, 7, 9})       

 

Stiu cum se face programelul de selecteaza cea mai mare cifra a unui numar, nudemerirea mea e cum fac partea cu "se introduc n numere".Cate variabile trebuiesc declarate la inceput? Exista vre un mod de a face asa ceva? Sunt putin confuz, in exemplu vad o singura variabila 'a' cuprinsa intre acolade.Are cineva o idee?

  • Moderators
Posted
#include <iostream>
using namespace std;
int main(void)
{
    int n,i,max,x;
    cout<<"n="; cin>>n;
    for (i=1;i<=n;i++)
    {
        cout<<"n["<<i<<"]=";
        cin>>x; // citeşti cele n numere şi calculezi cifra maximă
                // de la fiecare
        max=0;
        while (x) // aceeaşi chestie cu while (x!=0)
        {
            if (x%10>max)
                max=x%10;
            x=x/10;
        }
        cout<<max<<endl;
    }
    return 0;
}
Posted

Multumesc Courage, dar nu stiu ce face linia asta: cout<<"n["<<i<<"]=";  

Nu am invatat nimic despre parantezele astea patrate pana acum (exercitiile le-am gasit pe internet, nu ni le-a dat profu)

  • Moderators
Posted

Poţi tăia liniile acelea. Ideea că citeşti n, după care mai citeşti n numere şi la fiecare afişează cifra cea mai mare.

 

Se poate ca mai întâi să citeşti cele n numere şi să afişezi la final cifra maximă de la fiecare, dar încă n-ai învăţat despre vectori.

  • Moderators
Posted

what can I say? Looking forward to learn about that shi' :) , multumesc pt raspunsuri si timpul acordat :D

 

Ceva de genul daca vrei sa te joci :D

#include <iostream>
using namespace std;
int main(void)
{
    int n,i,a[9999],x,s=1,max;
    cin>>n;
    for (i=1;i<=n;i++)
    {
        cin>>x;
        max=0;
        while (x)
        {
            if (x%10>max)
                max=x%10;
            x=x/10;
        }
        a[s]=max;
        s++;
    }
    for (i=1;i<s;i++)
        cout<<a[i]<<". ";
    return 0;
}
  • 1 month later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.