Totul despre PC și mai mult de atât!

Categorie: Algoritmi C++ (Page 1 of 2)

Algorithm for primality test C++

A prime number (or a prime) is a natural number greater than 1 that cannot be formed by multiplying two smaller natural numbers. A natural number greater than 1 that is not prime is called a composite number. For example, 5 is prime because the only ways of writing it as a product, 1 × 5 or 5 × 1, involve 5 itself. However, 6 is composite because it is the product of two numbers (2 × 3) that are both smaller than 6. Primes are central in number theory because of the fundamental theorem of arithmetic: every natural number greater than 1 is either a prime itself or can be factorized as a product of primes that is unique up to their order.

source: Wikipedia

Considering a number n we can find out whether it is prime or not applying by the following C++ algorithm:

#include <iostream.h>
long int n, prim, d;
main()
{
cin>>n;
prim=1;
d=2;
while (d<=n/2)
{if (n%d==0) 
prim=0;
d=d+1;
}
if (prim==1)
cout<<"Yes";
else cout<<"No";
}

Algoritmul de ordonare prin interschimbare C++

Acest algoritm ordonează crescător sau descrescător un șir de numere.

Dacă doriți să descărcați un exemplu de program care ordonează un șir de numere folosind acest algoritm, dați click pe ACEST LINK.

Din păcate acest algoritm nu este eficient deoarece dacă șirul este ordonat el nu își va da seama și va executa n(n-1)/2 operații. Un algoritm de ordonare mai eficient este buble-sort pe care îl vom aborda într-un articol viitor.

#include <iostream.h>
#include <fstream.h>
int v[100]; //se poate da orice valoare dorim in functie de numarul de valori care trebuie ordonate
int n, i, ok;
ifstream fin("vector.txt");
ofstream fout ("iesire.txt");
void main()
{
fin>>n;
for (i=1; i<=n; i++) fin>>v[i];
do {ok=0;
	for (i=1; i<=n-1; i++)
		if (v[i]>v[i+1]) {v[i]=v[i]+v[i+1];
							v[i+1]=v[i]-v[i+1];
							v[i]=v[i]-v[i+1];
							ok=1;}
	}
while (ok==1);

for (i=1; i<=n; i++) fout<<v[i]<<' ';
cout<<"Ordonarea s-a realizat cu succes!"<<endl<<"Puteti vizualiza sirul ordonat in fisierul de iesire."<<endl;
fin.close();
fout.close();
}

Cum scriem un algoritm in C++

Salut, în acest tutorial m-am gândit să vă arăt cum puteți scrie un algoritm în C++. Pentru acest lucru avem nevoie de programul MinGW Studio Developer, care este un mediu de dezvoltare integrat pentru C++ și pe care îl putem descarca gratuit. Acest tutorial este dedicat începătorilor în informatică, celor care doresc să vadă cum se lucrează în C++. Un utilizator mediu de PC, care nu cunoaște algoritmica, e posibil sa rămână „în ceață” după vizionarea acestui tutorial.

Acum, pentru cei interesați, puteți urmări tutorialul de mai jos.

Vizionare plăcută !

Algoritmul lui Euclid

Algoritmul lui Euclid ne poate ajuta să determinăm, având 2 numere, cel mai mare divizor comun, printr-o metodă simplă şi eficientă din punctul de vedere al consumului de resurse.

„Un număr întreg d se numește cel mai mare divizor comun a numerelor întregi a și b dacă și numai dacă pentru orice divizor comun c al lui a și b, d este un divizor al lui c.

În cazul în care impunem condiția d>0 este relativ simplu de verificat dacă d este unic. Acest număr se notează cu c.m.m.d.c(a,b), sau mai simplu: (a,b).

Folosind principiul bunei ordonări a numerelor naturale, putem deduce că c.m.m.d.c(a,b) este cel mai mic număr pozitiv care poate fi scris ca o combinație liniară a lui a și b, adică cel mai mic număr natural de forma a*x+b*y, unde x,y sunt numere întregi.”

Sursă: Wikipedia

Pseudocod

Di: n, m
De: n

citeşte n, m
┌cât timp n!=m execută
│   ┌dacă n>m
│   │   atunci n←n-m
│   │   altfel m←m-n
│   └■
└■
Scrie n

Limbaj C++

#include <iostream.h>
unsigned int n, m;
main()
{
cin>>n>>m;
while (n=m)
if (n>m) 
n=n-m;
else m=m-n;
Cout<<n;
}

Algoritmul pentru testarea unui număr prim

„Un număr prim este un număr natural care are exact doi divizori: numărul 1 și numărul în sine. Cel mai mic număr prim este 2, în afară de 2 toate numerele prime sunt numere impare.

Un număr natural p > 1 se numește prim dacă : p | ab atunci p | a sau p | b, unde a, b sunt numere naturale.

De exemplu 15 | 9 * 5, dar 15 | 9, 15 | 5, adică 15 nu este număr prim.

În anul 300 î.Hr. Euclid a demonstrat că există o infinitate de numere prime. Iată demonstrația: presupunând prin absurd că p ar fi cel mai mare număr prim, construim numărul n=2x3x5x……xp+1. Acesta nu se divide cu nici unul din numerele 2, 3, 5, ….., p, așadar sau este prim, sau are un divizor prim mai mare ca p, ceea ce contrazice presupunerea că p ar fi cel mai mare număr prim.

Nu se știe dacă există o infinitate de numere prime gemene (impare consecutive ca: [3, 5]; [41, 43]; [59, 61]; [101, 103] etc.).”

Sursă: Wikipedia

Considerand un numar n putem afla daca acesta este prim sau nu aplicand urmatorul algoritm:

Pseudocod

Di: n
De: mesaj (Da/Nu)
Daux: prim, d

citeşte n
prim←1
d←2
┌cât timp d<=n/2 execută
│   ┌dacă n%d=0
│   │   atunci prim←0
│   └■
│ d←d+1
└■
┌dacă prim=1
│   atunci scrie "Da"
│   altfel scrie "Nu"
└■

Limbaj C++

#include <iostream.h>
long int n, prim, d;
main()
{
cin>>n;
prim=1;
d=2;
while (d<=n/2)
{if (n%d==0) 
prim=0;
d=d+1;
}
if (prim==1)
cout<<"Da";
else cout<<"Nu";
}

Algoritmul de spargere a unui numar in cifre

„C++ este un limbaj de programare general, compilat. Este un limbaj multi-paradigmă, cu verificarea statică a tipului variabilelor ce suportă programare procedurală, abstractizare a datelor, programare orientată pe obiecte. În anii 1990, C++ a devenit unul din cele mai populare limbaje de programare comerciale, rămânând astfel până azi.

Bjarne Stroustrup de la Bell Labs a dezvoltat C++ (inițial denumit C cu clase) în anii 1980, ca o serie de îmbunătățiri ale limbajului C. Acestea au început cu adăugarea noțiunii de clase, apoi de funcții virtuale, suprascrierea operatorilor, moștenire multiplă, șabloane și excepții.”

Sursă: Wikipedia

 

Presupunem ca avem un numar n si vrem sa aflam suma cfrelor acestui numar. Pentru asta aveam nevoie de algoritmul de spargere a unui numar in cifre.

 

Pseudocod

Di: n
De: s
Daux: c

citeşte n
s←0
┌cât timp n>0 execută
│ c← n%10
│ s← s+c
│ n← n/10
└■

Limbaj C++

#include <iostream.h>
unsigned int n,s,c;
main()
{
cin>>n;
s=0;
while (n>0)
{c=c%10;
s=s+c;
n=n/10;}
cout<<s;
}

Algoritmi C++

Algoritmul este o succesiune finită de pași, pe baza căreia se rezolvă o problemă (se prelucrează datele inițiale pentru a obține date finale).

Proprietățile unui algoritm:
1. Claritatea (pașii trebuie să fie descriși clar, fără ambiguități);
2. Generalitatea (pașii algoritmului trebuie să fie valabili pentru tot setul datelor de intrare și nu numai pentru un set particular);
3. Finititudinea (rezultatul să se obțină după un număr bine precizat de pași).

Di = date de intrare
De = date de ieșire
Daux = data auxiliare

Operatori -> aritmetici: + – * / %
-> logici: și  sau  not
-> relaționali < = > <= => <> !

Structuri de decizie: dacă;
dacă „expresie” atunci „instrucțiunea 1”
altfel „instrucțiunea 2”

Structuri repetitive cu test inițial: cât timp, pentru;

1. Cât timp: cât timp „expresie” execută „instrucțiune”

2. Pentru
a) ascendent:  pentru „v <- v1, vf”  execută  „instrucțiune” (v1 <= vf)
b) descendent:  pentru „v <- v1, vf”  execută  „instrucțiune” (v1=> vf)

Structuri repetitive cu test final: repetă;
┌repetă
│ „instrucțiune”
└până când „expresie”

« Older posts

© 2025 PC-Config

Theme by Anders NorenUp ↑