Cerința
Se dă un șir cu n elemente, numere naturale. Determinați diferența în valoare absolută dintre numărul de valori pare din șir și numărul de valori impare din șir.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele șirului.
Date de ieșire
Programul va afișa pe ecran numărul C, reprezentând valoarea cerută.
Restricții și precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000.000.000
Exemplu
Intrare
5
15 245 28 33 11
Ieșire
3
Explicație
Sunt 4 numere impare și un număr par în șir, deci diferența este 3.
Răspunsuri la întrebare
Răspuns de
2
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "random"
#include "time.h"
#include "math.h"
using namespace std;
void main()
{
double n;
int *p;
int nrPare = 0;
int nrImpare = 0;
do {
cout << "Cate numere sa aiba sirul?";
cin >> n;
if (n < 1 || n > 1000) {
cout << "Introduceti o valoare de la 1 la 1000!\n";
}
} while (n < 1 || n > 1000);
srand(time(NULL));
p = new int [n];
for (int i = 0; i < n; i++) {
p [i]= rand();
cout << p[i] << " ";
if (p[i] % 2 == 0) {
nrPare = nrPare + 1;
}
else {
nrImpare = nrImpare + 1;
}
}
cout << "\n\nNumarul C (diferenta in valoare absoluta dintre numarul de valori pare din sir si numarul de valori impare din sir) este:" << abs(nrPare - nrImpare);
_getch();
delete p;
}
Ce am facut: in primul rand am inclus o multime de librarii :) aveam nevoie de ele pentru diferite functii pe care o sa le explic.
In primul rand, n este numarul de numere din sir, p este numarul care va fi verficat de fiecare data daca este par sau nu, nrPare si nrImpare sunt simple contoare sa luam in calcul numarul de numere pare si impare.
Apoi, am inclus un do while ca de la tastatura sa se introduca in numaru mai mic de 1000 si mai mare de 1.
Acum vin functiile noi: srand si rand pe care le observe imediat una dupa alta. rand() este o functie ce genereaza o valoare aleatorie, doar ca are in dezavantaj: aceasta produce aceleasi numere la fiecare compilare, deci nu total random. srand() da un seed lui rand() ca toate numerele sa fie total aleatorii. srand() primeste ca parametrii in seed, si acesta este singurul lucru mereu in miscare: timpul(time(NULL)), astfel seedul fiind mereu altul.
Am verificat paritatea numarului p folosind %(modulo) si am adaugat cate 1 in contorul respective paritatii lui p.
Apoi am folosit abs() , functie ce calculeaza valoarea absoluta a unui numar, in cazul acesta nrPare - nrImpare.
Sper ca am fost de folos, daca nu imi intelegi codul te rog sa imi zici :).
#include "iostream"
#include "conio.h"
#include "random"
#include "time.h"
#include "math.h"
using namespace std;
void main()
{
double n;
int *p;
int nrPare = 0;
int nrImpare = 0;
do {
cout << "Cate numere sa aiba sirul?";
cin >> n;
if (n < 1 || n > 1000) {
cout << "Introduceti o valoare de la 1 la 1000!\n";
}
} while (n < 1 || n > 1000);
srand(time(NULL));
p = new int [n];
for (int i = 0; i < n; i++) {
p [i]= rand();
cout << p[i] << " ";
if (p[i] % 2 == 0) {
nrPare = nrPare + 1;
}
else {
nrImpare = nrImpare + 1;
}
}
cout << "\n\nNumarul C (diferenta in valoare absoluta dintre numarul de valori pare din sir si numarul de valori impare din sir) este:" << abs(nrPare - nrImpare);
_getch();
delete p;
}
Ce am facut: in primul rand am inclus o multime de librarii :) aveam nevoie de ele pentru diferite functii pe care o sa le explic.
In primul rand, n este numarul de numere din sir, p este numarul care va fi verficat de fiecare data daca este par sau nu, nrPare si nrImpare sunt simple contoare sa luam in calcul numarul de numere pare si impare.
Apoi, am inclus un do while ca de la tastatura sa se introduca in numaru mai mic de 1000 si mai mare de 1.
Acum vin functiile noi: srand si rand pe care le observe imediat una dupa alta. rand() este o functie ce genereaza o valoare aleatorie, doar ca are in dezavantaj: aceasta produce aceleasi numere la fiecare compilare, deci nu total random. srand() da un seed lui rand() ca toate numerele sa fie total aleatorii. srand() primeste ca parametrii in seed, si acesta este singurul lucru mereu in miscare: timpul(time(NULL)), astfel seedul fiind mereu altul.
Am verificat paritatea numarului p folosind %(modulo) si am adaugat cate 1 in contorul respective paritatii lui p.
Apoi am folosit abs() , functie ce calculeaza valoarea absoluta a unui numar, in cazul acesta nrPare - nrImpare.
Sper ca am fost de folos, daca nu imi intelegi codul te rog sa imi zici :).
MadalinaMadutaa:
voiam cu tablouri unidimensionale
Alte întrebări interesante
Matematică,
8 ani în urmă
Ed. muzicală,
8 ani în urmă
Istorie,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă