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

cu explicatie

45 de puncte ​

Anexe:

Răspunsuri la întrebare

Răspuns de Inspiratul
0

Răspuns:

Subpunctul h)

#include <iostream>

using namespace std;

int a[100],n,i;

int main()

{

   cin>>n;

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

    cin>>a[i];

   /// Citirea vectorului

   for(i=1;i<=n/2;i++)  /// Se va parcurge doar jumatate din lungimea vectorului

   {

       int aux=a[i];

       a[i]=a[n-i+1]; /// a[n-i+1] este formula prin care se aceseaza elementul simetric din a doua jumatate a vectorului

       a[n-i+1]=aux;

   }

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

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

   /// Afisarea vectorului

   return 0;

}

Subpunctul i)

#include <iostream>

using namespace std;

int a[100],n,i,j,val1,val2;

int main()

{

   cin>>n;

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

    cin>>a[i];

   /// Citirea vectorului

   i=1;

   while(i<=n && a[i]%2==0)

    i++;

   val1=a[i];

   /// Aici toata chestia sta in acel while care incepe de la 1 si merge pana la n, in cazul in care nu exista o valoare impara. In val1 se retine prima valoare impara din vector, iar in i ramane pozitia acesteia in vector

   j=n;

   while(j>=1 &&a[j]%2==0)

    j--;

   val2=a[j];

   /// Acelasi lucru se intampla si la acest while, decat ca incepe de la n si merge pana la 1, iar val2 reprezinta ultima valoare impara din vector

   if(val1==0) /// Daca val1 este 0, inseamna ca nu exista vreo valoare impara in vector

    cout<<"Vectorul nu are elemente impare";

   else

    if(i==j) /// Daca i si j sunt egale, inseamna ca exista doar o singura valoare impara, aceasta fiind astfel si pima si ultima

      cout<<"Vectorul contine o singura valoarea impara egala cu "<<val1;

   else /// Si in final, daca nu se indeplinesc conditiile din if-urile de mai sus, inseamna ca exista cel putin 2 valori impare care se vor afisa

   {

       cout<<"Prima valoare impara din vector este egala cu "<<val1<<endl;

       cout<<"Ultima valoare impara din vector este egala cu "<<val2;

   }

   return 0;

}

Subpunctul j)

#include <iostream>

using namespace std;

int a[100],n,i,valmin,ap;

int main()

{

   cin>>n;

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

    cin>>a[i];

   /// Citirea vectorului

   valmin=a[1];

   ap=1;

   /// Pentru inceput, prespunem ca prima valoare este minimul, iar ap care retine aparitiile valorii minime primeste pentru un moment 1

   for(i=2;i<=n;i++) /// Vectorul se parcurge acum de la elementul de pe pozitia 2

    if(a[i]<valmin) /// Daca se gaseste un element mai mic decat valmin, atunci valmin va primi aceasta valoare, iar ap va primi valoarea 1

     {

         valmin=a[i];

         ap=1;

     }

    else

     if(a[i]==valmin) /// In cazul contrar, daca exista o valoare egala cu valmin, ap va creste cu 1

      ap++;

   /// Nu ne intereaza daca exista valori mai mari, aceste valori sunt irelevante pentru problema noastra

    cout<<"Valoarea minima din vector este de "<<valmin<<" si apare de "<<ap<<" ori.";

   return 0;

}

Subpunctul k)

#include <iostream>

using namespace std;

int a[100],k,i,n,s,smax;

int main()

{

   cin>>n>>k;

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

    cin>>a[i];

   /// Citirea vectorului

   for(i=1;i<=k-1;i++)

    s+=a[i];

   /// Variabila s va fi o variabila auxiliara, care retine o suma intermediara din k elemente de pe pozitii consecutive

   for(i=k;i<=n;i++) /// Se va parcurge vectorul de la k la n

   {

       s+=a[i]; /// Initial, suma pana la aceasta operatie retine suma celor k-1 numere anteriore, la care se adauga numarul de pe pozitia k

       if(s>smax)

        smax=s;

       /// Verificarea si actualizarea smax

       s-=a[i-k+1]; /// la final, din s se va elimina primul element care constituie suma. Spre exemplu, daca n=5, k=3 si avem 1 2 3 4 5, dupa ce s era 3, acesta scade la 2 prim eliminarea lui 1 din suma, iar pe urma va devini 5 prin adaugarea lui 3 si algoritmul continua

   }

   cout<<smax;

   return 0;

}

Explicație:


alinetare2005: daca sunt numere impare
Inspiratul: Nu trebuie, este pe invers. While-ul trebuie sa mearga atat timp cat componenta vectorului pe care o acceseaza este para, ca atunci cand gaseste una impara, trebuie sa suspendeze actiunea lui.
alinetare2005: a da
alinetare2005: am înțeles
alinetare2005: am. mai pus si la cealta foaie
alinetare2005: întrebare
alinetare2005: e chestia ca o fac acum
Inspiratul: O sa ma uit acum, ca dupa am niste cursuri pe la facultate si sigur nu mai am cand dupa.
alinetare2005: ai mai putea frate sa ma ajuți?
alinetare2005: te rog mult
Alte întrebări interesante