Probleme de informatică
  Clasa a IX-a
1. Elementele de bază ale limbajului C++ (instructiunile limbajului) (46)
2. Subprograme predefinite (1)
3. Tablouri (145)
4. Fişiere text (2)
5. Algoritmi elementari (104)
6. Probleme diverse (12)
  Clasa a X-a
1. Subprograme definite de utilizator (87)
2. Şiruri de caractere (42)
3. Înregistrări (26)
4. Recursivitate (57)
5. Combinatorica (0)
6. Alocarea dinamică a memoriei (2)
7. Liste înlănţuite (25)
8. Algoritmul lui Lee (1)
  Clasa a XI-a

1. Metoda "Divide et impera" (12)
2. Metoda Backtracking (85)
3. Metoda Greedy (6)
4. Programare dinamică (18)
5. Grafuri neorientate (37)
6. Grafuri orientate (38)
7. Arbori (33)

  Clasa a XII-a
1. Elemente de baza C# (32)
2. POO in C# (13)
3. C# - Windows Form Application (24)
4. Admitere UBB (12)

   Home Subprograme Bacalaureat 2016   |   Variante bacalaureat 2009   |   Atestat  |   Olimpiada       
Noutăţi
Subiecte admitere la Facultatea de informatica UBB Cluj-Napoca
Subiecte bacalaureat 2010-2017
Bacalaureat 2017 - competenţe digitale
C# - Windows Form Application - exemple
Modele de proiecte de atestat
Bacalaureat 2017
Subiecte si rezolvări 2010-2017
Rezolvari variante bacalaureat 2009
Competenţe digitale
Examen atestat
Rezumat documentatie
Teme proiect
php.doc
css.doc
exemple_php_si_css.rar
Modele de proiecte de atestat
Subiecte atestat 2014 CNLR
Olimpiada
Clasele V-VI
Clasele VII-VIII
Clasa a IX-a
Clasa a X-a
Clasele XI-XII
Noţiuni teoretice
Metode de sortare
Metoda backtracking


Inmultirea numerelor mari
Numerele naturale cu foarte multe cifre se pot memora cu ajutorul vectorilor. Sa se calculeze si sa se afiseza produsul a doua numere naturale memorate in 2 vectori a si b cu n si respectiv m elemente.
Cifrele numerelor se vor introduce de la tastatura fara spatiu intre ele.
Exemplu: vezi figura alaturata


#include<iostream>
using namespace std;

void citire(int a[1000], int &n)
{
	char cif;
	int i;
	cin>>n;
	for(i=n;i>=1;i--)
		{ cin>>cif;
	      a[i]=cif-48;//transform sin cifra in numar (cifa este caracter)
		} 
}

void aduna(int a[1000], int n, int b[1000], int m, int s[2000], int &p)//s=a+b
{   int i,t,c; 
	if(n<m) 
		{ p=m;//nr max de cifre
	      for(i=n+1;i<=m;i++) a[i]=0;//completez cu 0
		}
	else { p=n;//nr max de cifre 
	       for(i=m+1;i<=n;i++) b[i]=0;//completez cu 0
 	     }
	
	t=0;
	for(i=1;i<=p;i++)
	{
		c=a[i]+b[i]+t; //adun cifra cu cifra
		s[i]=c%10;//restul se pune
		t=c/10;//catul e transport
	}
	if(t==1)// a ramas transport
	{
		p++;//avem cu o cifra mai mult
		s[p]=t;
	}
}

void prod(int a[1000], int n, int cif, int s[1000], int &p)//s=a*cif inmultirea cu o cifra
{   int i,t,c;
	p=n;
	t=0;
	for(i=1;i<=p;i++)
	{
		c=a[i]*cif+t;//inmultesc cifra cu cifra
		s[i]=c%10;//restul
		t=c/10;//transportul
	}
	if(t>0)// a ramas trasnport
	{
		p++;
		s[p]=t;
	}
}

void prod10(int a[1000], int n, int s[2000], int &p, int x) //inmulteste pe s cu 10 la x
{
	int y,j;
	for(j=1;j<=n;j++) s[j]=a[j];
	p=n;
	for(y=1;y<=x;y++) //deplasez spre stanga cu x pazitii si completez cu 0
		{
		   p++;
		   for(j=p;j>=1;j--) s[j]=s[j-1];//deplasase
		}
	for(j=1;j<=x;j++) s[j]=0;//completare cu 0
}

int main()
{
	int n,m,a[1000],b[1000],s[2000],ss[2000],ps,p,i,pp[2000],k,x,y,j;
	k=0;
	x=0;
    citire(a,n);
	citire(b,m);
	for(i=1;i<=m;i++) //pentru fiecare cifra a lui b
	{   
		prod(a,n,b[i],s,p);//inmultesc a cu cifra din b
		prod10(s,p,ss,ps,x);//inmulteste pe s cu 10 la x
		x++;//tine minte cu cate pozitii am de mutat
		aduna(ss,ps,pp,k,pp,k);//adun la pp pe s  pp este suma , iar s este produsul cu o cifra mutat cu cat trebuie 
	}
	for(i=k;i>=1;i--) cout<<pp[i];
	return 0;
}


  Clasa a IX-a
1. Elementele de bază ale limbajului C++ (instructiunile limbajului) (46)
2. Subprograme predefinite (1)
3. Tablouri (145)
4. Fişiere text (2)
5. Algoritmi elementari (104)
6. Probleme diverse (12)
  Clasa a X-a
1. Subprograme definite de utilizator (87)
2. Şiruri de caractere (42)
3. Înregistrări (26)
4. Recursivitate (57)
5. Combinatorica (0)
6. Alocarea dinamică a memoriei (2)
7. Liste înlănţuite (25)
8. Algoritmul lui Lee (1)
  Clasa a XI-a

1. Metoda "Divide et impera" (12)
2. Metoda Backtracking (85)
3. Metoda Greedy (6)
4. Programare dinamică (18)
5. Grafuri neorientate (37)
6. Grafuri orientate (38)
7. Arbori (33)

  Clasa a XII-a
1. Elemente de baza C# (32)
2. POO in C# (13)
3. C# - Windows Form Application (24)
4. Admitere UBB (12)

Calculatoare si accesorii second hand
Copyright 2009-2017 Muresan Vasile Ciprian - mcip.ro