Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Exercitiu

Se citesc n nr naturale de la tastatură. Sa se determine în câte zerouri se va termina produsul acestora, fără a calcula efectiv produsul. Ex: 12, 35, 30, 75 → 3 zerouri.

Analiza Programului

Pentru a obtine cifra zero, singura posibilitate o reprezinta inmultirea factorilor primi 2 si 5.
Numaram de cate ori apar 2 si 5 in descompunerea numarului si valoarea cea mai mica dintre cele doua contoare va insemna numarul de zerouri.

Rezolvarea in C#

using System;

namespace _20
{
    class Program
    {
        static void Main(string[] args)
        {
           
            int n;
            int _2count, _5count, countZeroes;
            _2count = _5count = countZeroes = 0;
       
            Console.WriteLine("Numarul de numere naturale:");
            int numbers = int.Parse(Console.ReadLine());

            for (int i = 1; i <= numbers; i++)
            {
                Console.WriteLine("Numarul {0}", i);
                n = int.Parse(Console.ReadLine());
                
                //cat timp numarul este divizibil la 2, incrementam contorul corespunzator
                if (n % 2 == 0)
                {
                    while (n % 2 == 0)
                    {
                        _2count++;
                        n = n / 2;
                    }
                }

                //cat timp numarul este divizibil la 2, incrementam contorul corespunzator
                if (n % 5 == 0)
                {
                    while (n % 5 == 0)
                    {
                        _5count++;
                        n /= 5;
                    }
                }

                if (_2count < _5count)
                    countZeroes = _2count;
                else
                    countZeroes = _5count;
            }
             
            Console.WriteLine("Numarul de zerouri al produsului este: {0}", countZeroes);
            Console.ReadLine();
        }
    }
}

Rezolvarea in C++

//the header conio, which include library functions for performing "console input and output"
#include <conio.h>
//the header iostream, which supports the C++ I/O system
#include <iostream>
//tells the compiler to use the std namespace
using namespace std;

//begin program execution
int main()
{
    int numbers, n;

    int _2count, _5count, countZeroes;
    _2count = _5count = countZeroes = 0;
    
    cout<<"Numarul de numere naturale:";
    cin>>numbers;
    for (int i = 1; i <= numbers; i++)
        {
            cout<<"Numarul "<<i<<endl;
            cin>>n;
            //cat timp numarul este divizibil la 2, incrementam contorul corespunzator
            if (n % 2 == 0)
            {
                while (n % 2 == 0)
                {
                    _2count++;
                    n = n / 2;
                }
            }

            //cat timp numarul este divizibil la 2, incrementam contorul corespunzator
            if (n % 5 == 0)
            {
                while (n % 5 == 0)
                {
                    _5count++;
                    n /= 5;
                }
            }

            if (_2count < _5count)
                countZeroes = _2count;
            else
                countZeroes = _5count;
            }

            cout<<"Numarul de zerouri al produsului este: "<<countZeroes<<endl;

    return 0;
}
Category: Uncategorized

Your email address will not be published. Required fields are marked *

*