Informatică, întrebare adresată de o2605992, 8 ani în urmă

1. Se considera tabloul T[1..n,1..n] cu elemente numere intregi. Sa se compuna un program
care va calcula produsul elementelor nenule de deasupra diagonalei secundare si va numara elementele negative de sub diagonala principala a matricei T.

2. Se considera o expresie algebrica memorata in variabila T de tip String. Sa se compuna un program care verifica daca in sirul T sunt aplicate corect parantezele rotunde.
Exemple: ‘(12+ab(c-d)/5 -67) +(a+b)’ –corect; ‘(12+ab(c-d)/5 -67) +)a+b(’ –incorect.

Programele sa fie in C++.

Răspunsuri la întrebare

Răspuns de andreidiaconescu18
3

1.

#include <iostream>

using namespace std;

int main() {

   int n;

   int a[100][100];

   cout << "n=";

   cin >> n;

   for (int i = 0; i < n; i++)

       for (int j = 0; j < n; j++) {

           cout << "a[" << i << "][" << j << "]=";

           cin >> a[i][j];

       }

   cout << "Matricea initiala:" << endl;

   for (int i = 0; i < n; i++) {

       for (int j = 0; j < n; j++)

           cout << a[i][j] << " ";

       cout << endl;

   }

   int p=1;

   int k=0;

   for(int i=0; i<n; i++)

       for(int j=0; j<n; j++)

       {

           if (i + j < n - 1 && a[i][j] != 0)

               p = p * a[i][j];

           if (i > j && a[i][j] < 0)

               k++;

       }

   cout<<"P="<<p<<endl;

   cout<<"Nr. elem neg = "<<k<<endl;

   return 0;

}


2. Daca nu ai inteles rezolvarea intreaba si iti explic. Pe scurt e o problema ce se rezuma la un automat de tip stiva. Cand ai o paranteza ( incrementezi contorul, cand ai invers decrementezi si verifici mereu sa fie mai mare sau egal cu 0. La sfarsitul sirului ar trebui ca el sa fie 0.


#include <iostream>

#include <cstring>

using namespace std;

int validare(char c, int k)

{

   if(!(c=='(' || c==')'))

       return k;

   if(c=='(')

       return k+1;

   if(c==')')

       return k-1;

}

int main() {

   char T[200] ="(12+ab(c-d)/5 -67) +(a+b)";

   int k=0;

   for(int i=0; i<strlen(T); i++)

   {

       k = validare(T[i],k);

       if(k<0)

           break;

   }

   if(k==0)

       cout<<"corect"<<endl;

   else

       cout<<"incorect"<<endl;

   return 0;

}


Alte întrebări interesante