Probleme de informatica - enunturi si rezolvari

Probleme de informatică
Clasa a IX-a
Elementele de bază C++ (46)
Subprograme predefinite (1)
Fişiere text (2)
Algoritmi elementari (109)
Tablouri unidimensionale (83)
Tablouri bidimensionale (64)
Probleme diverse (13)
Clasa a X-a
Subprograme (funcții) (87)
Şiruri de caractere (49)
Tipul înregistrare (26)
Recursivitate (57)
Alocarea dinamică a memoriei (2)
Liste înlănţuite (25)
Algoritmul lui Lee (1)
Clasa a XI-a
Metoda "Divide et impera" (12)
Metoda Backtracking (85)
Metoda Greedy (6)
Programare dinamică (18)
Grafuri neorientate (37)
Grafuri orientate (38)
Arbori (33)
Clasa a XII-a
Elemente de bază C# (32)
POO în C# (13)
Programare vizuală în C# (10)
Examen de bacalaureat
Competențe digitale
Examen de atestat
Admitere UBB (18)
Se considera definite urmatoarele subprograme:
s1, cu doi parametri: a, b doua numere intregi cu cel mult 4 cifre fiecare. Subprogramul interschimba valorile a doua variabile transmise prin intermediul parametrilor a si b.
s2, cu trei parametri: a, un tablou unidimensional cu cel mult 100 de elemente numere intregi cu cel mult 4 cifre fiecare, p si q, numere naturale intre 1 si 100. Subprogramul cauta primul element divizibil cu 5 in secventa a[p], a[p+1], ..., a[q], si returneaza pozitia acestuia, daca exista un astfel de element, sau valoarea -1 n caz contrar.
a) Scrieti definitia completa a subprogramului s1.
b) Scrieti definitia completa a subprogramului s2.
c) Scrieti programul C/C++ care citeste de la tastatura o valoare naturala n (intre 1 si 99) si apoi un tablou unidimensional a, cu n elemente, numere intregi cu cel mult 4 cifre fiecare. Programul determina, folosind apeluri utile ale subprogramului s2, primul element divizibil cu 5 (daca exista) si ultimul element divizibil cu 5 (daca exista) al tabloului a, interschimba valorile elementelor gasite, folosind apelul subprogramului s1, si apoi scrie elementele tabloului a astfel transformat, separate prin cate un spatiu.
Exemplu: pentru n=7 si tabloul a=(6,10,4,15,2,5,8), programul va scrie 6 5 4 15 2 10 8

#include<iostream>
using namespace std;
void s1(int &a, int &b)
{
	int aux=a;
	a=b;
	b=aux;
}
int s2(int a[100], int n, int p, int q)
{
	int i;
	i=p;
	while(i<=q && a[i]%5!=0) i++;
	if(i==q+1) return -1;
	else return i;
}

int main()
{
	int a[100],n,i,j;
	cin>>n;
	for(i=1;i<=n;i++) cin>>a[i];
	i=s2(a,n,1,n);
	j=n;
	while(s2(a,n,j,n)==-1) j--;
	s1(a[i],a[j]);
	for(i=1;i<=n;i++) cout<<a[i]<<" ";
}

20 aug 2018
Site-ul conține 867 de probleme rezolvate
Copyright © 2009-2018 Muresan Vasile Ciprian