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

cu explicatie

50 de puncte​

Anexe:

Răspunsuri la întrebare

Răspuns de Inspiratul
0

Răspuns:

a.)

#include <iostream>

using namespace std;

int n,a[301],i,lmax,l;

int main()

{

   cin>>n;

   for(i=1;i<=n;i++)

    cin>>a[i];

   /// Citirea vectorului

   for(i=1;i<=n;i++) /// Parcurgerea vectorului

   {

      if(a[i]%2!=0 && a[i]<0) /// Daca elementul este negativ si impar, atunci variabila l creste cu 1, altfel se reseteaza la 0

       l++;

      else

       l=0;

      if(l>lmax) /// Daca valoarea lui l este mai mare decat lmax, lmax va primi valoarea lui l

       lmax=l;

   }

   cout<<lmax;

   return 0;

}

b.)

#include <iostream>

using namespace std;

int a[301],n,i,nr;

float ma;

int cifra_de_control(int a) /// Subprogramul care determina cifra de control a unui numar a (Pe scurt sua cifrelor pana cand acesta este mai mica decat 10 ex: pt a=30, cifra de control este 3, pt a=98 initail cifra de control este 17, dar pt ca 17>10, se va mai apela odata functia iar la final va returna 8=1+7

{

   int s=0;

   while(a>0)

   {

       s+=a%10;

       a/=10;

   }

   if(s>9)

    return cifra_de_control(s);

   else

    return s;

}

int main()

{

   cin>>n;

   for(i=1;i<=n;i++)

    cin>>a[i];

   /// Citirea vectorului

   for(i=1;i<=n;i++) /// Parcurgerea vectorului

    if(cifra_de_control(a[i])==i%10) /// Daca cifra de control a componentei este egala cu ultima cifra a pozitiei, atunci nr va creste cu 1, iar la variabila ma se adauga a[i]

   {

       ma+=a[i];

       nr++;

   }

   ma/=nr; /// Am folosit float pt variabila ma pentru a face la final aceasta operatie in loc sa declaram o variabila in plus

   cout<<ma;

   return 0;

}

c.)

#include <iostream>

using namespace std;

int a[301],n,i,val1,val2,val3;

int main()

{

   cin>>n;

   for(i=1;i<=n;i++)

    cin>>a[i];

   /// Citirea vectorului

   i=n; /// Vom parcurge vectorul de la coada la cap

   while(i>=1 && val3==0) /// Conditia de parcurge a vectorului este ca i sa fie mai mare sau egal cu 1, iar val3 sa fie 0, adica nu s-au gasit cel putin 3 valori

   {

       if(a[i]%2==0) /// Daca gasim un element par, atunci variabilele val1,val2 si val3 se vor acutaliza in acesta ordine: Prima data val1, daca este 0, in cazul contrar, val2 primeste o val daca este 0, altfel, val3 primeste 0

       {

           if(val1==0)

            val1=a[i];

           else

            if(val2==0)

              val2=a[i];

           else

            val3=a[i];

       }

       i--; /// Conditia ca while-ul sa nu se blocheze

   }

   if(val3==0) /// Daca val3 este 0 inseamna ca nu exista cel putin 3 valori pare, asa ca vom afisa valori insuficiente, iar in caz contrar, se vor afisa aceste valori in ordinea precizata in program

    cout<<"Valori insuficiente";

   else

    cout<<val1<<" "<<val2<<" "<<val3;

   return 0;

}

d.)

#include <iostream>

using namespace std;

int n,i;

char a[301];

int main()

{

   cin>>n;

   for(i=1;i<=n;i++)

    cin>>a[i];

   /// Citirea vectorului

   i=n; /// Vom parcurge vectorul de la n

   if(n%2==0) /// Vom face operatii diferite in functie de paritatea lui n

    {

        while(i>=n/2+1 && a[i-n/2]==a[i]) /// Se parcurge vectorul daca i este in a doua jumatate a vectorului si a[i] si a[i-n/2] adica componenta corespunzatoare din prima jumatate sunt egale

         i--;

        if(i<n/2+1) /// Daca i a ajuns in prima jumatate, atunci inseamna ca vectorul este simetric

          cout<<"DA";

         else

          cout<<"NU";

    }

   else

     {

         /// Acelasi lucru se intampla si aici, decat ca elementul complementar este a[i-(n+1)/2+1]

         while(i>=(n+1)/2+1 && a[i-(n+1)/2]==a[i])

           i--;

         if(i<(n+1)/2+1)

          cout<<"DA";

         else

          cout<<"NU";

     }

   return 0;

}

Explicație:


alinetare2005: la primul subpunct
alinetare2005: unde trebuie sa l declar pe lmax
alinetare2005: bro, daca ai timp, eu mai pun o fisa
alinetare2005: e destul de grea
alinetare2005: as fi extrem de recunoscator daca mi ai explica bine si acolo
alinetare2005: ca pana la urma, din problemele astea
alinetare2005: invat cel mai mult
alinetare2005: ajtuma si la ce am mai postat te rog mult
Alte întrebări interesante