Va rog sa ma ajutați,este la Informatică,Vectorii.Dau coroana.
Erercitile de la A si B
Răspunsuri la întrebare
Răspuns:
#include <fstream>
#include <iostream>
using std::cout, std::cin, std::endl, std::size_t, std::ifstream, std::ofstream;
/* Funcția crează un vector de N dimensiune, dacă „citeșteElemente” este setat la „true” vei introduce de la tastatură elementele vectorului, altfel le preluăm din fișier*/
static int* creareVector(const size_t& dimensiuneVector, bool citesteElemente) {
int* pVector = new int[dimensiuneVector];
if (citesteElemente) {
for (size_t i = 0; i < dimensiuneVector; ++i) {
cout << "pVector[" << i << "] = ";
cin >> pVector[i];
}
}
return pVector;
}
static void primulExercitiu() {
// Dimensiunea vectorului
size_t dimensiuneVector;
cout << "Introdu dimensiunea vectorului >> ";
cin >> dimensiuneVector;
// Dacă dimensiunea este mai mare decât 100 ieșim din program
if (dimensiuneVector > 100) {
exit(EXIT_FAILURE);
}
// Creăm vectorul cu dimensiunea dată
int* pVector = creareVector(dimensiuneVector, true);
// Și afișăm elementele unul după celălalt
for (size_t i = 0; i < dimensiuneVector; ++i) {
cout << pVector[i] << " ";
}
cout << endl;
// Eliberăm zona de memorie alocată
delete[] pVector;
}
// La fel ca și-n funcția de mai sus
static void alDoileaExercitiu() {
size_t dimensiuneVector;
cout << "Introdu dimensiunea vectorului >> ";
cin >> dimensiuneVector;
if (dimensiuneVector > 100) {
exit(EXIT_FAILURE);
}
int* pVector = creareVector(dimensiuneVector, true);
// Doar că aici afișăm elementele unul sub celălalt
for (size_t i = 0; i < dimensiuneVector; ++i) {
cout << pVector[i] << "\n";
}
cout << endl;
delete[] pVector;
}
// La fel ca și-n funcțiile de mai sus
static void alTreileaExercitiu() {
size_t dimensiuneVector;
cout << "Introdu dimensiunea vectorului >> ";
cin >> dimensiuneVector;
if (dimensiuneVector > 100) {
exit(EXIT_FAILURE);
}
int* pVector = creareVector(dimensiuneVector, true);
// Doar că aici afișăm invers vectorul, element după element
for (int i = static_cast<int>(dimensiuneVector) - 1; i >= 0; --i) {
cout << pVector[i] << " ";
}
cout << endl;
delete[] pVector;
}
// La fel
static void alPatruleaExercitiu() {
size_t dimensiuneVector;
cout << "Introdu dimensiunea vectorului >> ";
cin >> dimensiuneVector;
if (dimensiuneVector > 100) {
exit(EXIT_FAILURE);
}
int* pVector = creareVector(dimensiuneVector, true);
// Doar că afișăm vectorul invers, elementele unul sub celălalt
for (int i = static_cast<int>(dimensiuneVector) - 1; i >= 0; --i) {
cout << pVector[i] << "\n";
}
cout << endl;
delete[] pVector;
}
/* Aici citim din fișierul „vector.txt” și afișăm în fișierul „afișare.txt”, am combinat cele două exerciții într-unul singur. */
static void primulExercitiuSiAlDoileaFisier() {
// deschidem un ifstream ca să citim din fișier
ifstream fin("vector.txt", ifstream::in);
// și un ofstream ca să scriem în fișier
ofstream fout("afisare.txt", ofstream::app);
// Dacă unul dintre cele două n-a putut fi deschis, ieșim din program
if ((!fin.good()) || (!fout.good())) {
exit(EXIT_FAILURE);
}
// Citim dimensiunea vectorului
size_t dimensiuneVector;
cout << "Introdu dimensiunea vectorului >> ";
cin >> dimensiuneVector;
// Dacă dimensiunea este mai mare de 100 ieșim din program
if (dimensiuneVector > 100) {
exit(EXIT_FAILURE);
}
/* De data asta îi dăm celui de al doilea argument valoarea „false” deoarece vrem să citim elementele în vector dintr-un fișier, nu de la tastatură */
int* pVector = creareVector(dimensiuneVector, false);
// Le citim din fișier și le introducem în vector
for (size_t i = 0; i < dimensiuneVector; ++i) {
fin >> pVector[i];
}
// închidem ifstream-ul deoarece nu mai avem nevoie de el
fin.close();
// afișăm unul după celălalt în „afisare.txt” cu ajutorul ofstreamului
for (size_t i = 0; i < dimensiuneVector; ++i) {
fout << pVector[i] << " ";
}
fout << endl;
// afișăm unul sub celălalt în „afisare.txt” cu ajutorul ofstreamului
for (size_t i = 0; i < dimensiuneVector; ++i) {
fout << pVector[i] << "\n";
}
// închidem ofstream-ul deoarece nu mai avem nevoie de el
fout.close();
// și eliberăm zona de memorie alocată
delete[] pVector;
}
int main() {
// Cele 6 exerciții
primulExercitiu();
alDoileaExercitiu();
alTreileaExercitiu();
alPatruleaExercitiu();
primulExercitiuSiAlDoileaFisier();
return 0;
}