Buna ziua, am de facut urmatoarele cerinte in c++
stiu sa le declar in cpp, doar ca nu stiu rezolvarile..
multumesc
– initializeaza elementele tabloului cu valori aleatoare in intervalul [1, 1000] in
fsierul functii.cpp
In fsierul functii.cpp se defneste functia: void Inversare(int tablou[],
int size) care inverseaza elementele tabloului
– intr-o bucla de la i = 0, j = size -1, cat timp i < j,
se inverseaza valorile tablou[i] cu tablou[j] folosind o variabila
temporara
se incrementeaza i
se decrementeaza j
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <cstdlib>
using namespace std;
int v[10001] ;
int n ;
void GenerareNumere()
{
int i, k;
//srand(time(0)) ;
cout<<" n = " ;
cin>>n ;
for (i=0 ; i<n ; i++)
{
k = 1 + rand() % 1000 ; // generare numar intre 1 si 1000
v[i] = k ;
}
}
void AfisareVector()
{
int i ;
for (i=0; i<n ; i++)
cout<<v[i]<<" " ;
}
void inversare(int tablou[])
{
int temp, i=0, j=n-1;
while (i<j)
{
temp=tablou[i];
tablou[i]=tablou[j];
tablou[j]=temp;
++i;
--j;
}
}
int main()
{
GenerareNumere() ;
cout<<"\n\n Vectorul initial :\n " ;
AfisareVector() ;
inversare(v);
cout<<"\n\n Vectorul dupa inversare :\n " ;
AfisareVector() ;
return 0 ;
}
Explicație:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void initializare(int vec[], int n){
srand(time(NULL)); // pentru numere aleatoare diferite la fiecare rulare a functiei, (maxim un apel pe secunda, daca se fac mai multe de atat numerele returnate de rand() vor fi egale)
for(int i = 0; i<n; i++){
vec[i] = rand()%1000+1; // rand()%1000 -> [0, 999], rand()%1000+1 -> [1,1000]
}
}
void Inversare(int tablou[], int size){
register int temp;
for(int i = 0, j = size - 1; i < j; i++, j--){
temp = tablou[i];
tablou[i] = tablou[j];
tablou[j] = temp;
}
}
//afisare() nu e necesar, aici, l-am folosit doar pentru a testa
void afisare(int vec[], int n){
for(int i = 0; i < n; i++)
cout << vec[i] << ' ';
cout << endl;
}
int vec[1000], n;
// test cu 10 numere
int main(){
n = 10;
initializare(vec, n);
afisare(vec,n);
Inversare(vec, n);
afisare(vec,n);
}