Răspuns :
Răspuns:
#include <fstream>
using namespace std;
ifstream fin("pinguini.in");
ofstream fout("pinguini.out");
int n, a[10001], i,lg,lgmax,nrp,nrg,c;
int main()
{
fin>>c>>n;
for(i=1;i<=n;i++)
{
fin>>a[i];
if(a[i]==2)nrp++;
}
if(a[1]==1)nrg=0;
else nrg=1;
for(i=2;i<=n;i++)
if(a[i]==2&&a[i-1]==1)nrg++;
lg=lgmax=0;
for(i=1;i<=n;i++)
if(a[i]==2)lg++;
else
{
if(lg>lgmax)lgmax=lg;
lg=0;
}
if(lg>lgmax)lgmax=lg;
if(c==1)fout<<nrp<<endl;
if(c==2)fout<<nrg<<endl;
if(c==3)fout<<lgmax<<endl;
return 0;
}
Indicatie:
Pentru cerința 1) vom determina încă din citire numărul de pinguini (câte elemente sunt egale cu 2).
Pentru cerința 2) determinam câte dintre elementele egale cu 2 sunt precedate de valoarea 1, excepție face primul element care trebuie tratat separat.
Pentru cerința 3) determinam lungimea secvenței maxime de elemente egale cu 2.
Uite si solutia mea cu cateva comentarii, poate te ajuta mai mult. Daca nu intelegi ceva, astept intrebari ;)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("pinguini.in");
ofstream fout ("pinguini.out");
int main()
{
int C, N, V[10001], nrp = 0, nrg = 0, nrpmx = 0, lgmx = 0;
fin >> C; // Citim cerinta
fin >> N;
for (int i = 1; i <= N; i ++)
fin >> V[i]; // citim apa sau pingunii (ne spune in enunt ca daca avem 1 este apa, iar daca avem 2 este pinguin)
// La prima cerinta ne cere numarul de pinguni, prin urmare, numaram cifrele 2.
for (int i = 1; i <= N; i ++)
if (V[i] == 2)
nrp ++; // Aici avem cerinta 1
// La cerinta 2 ne cere nuamrul de grupuri izolate (doua grupuri sunt izolate daca sunt inconjurate de apa, prin uramre)
if (V[1] == 1)
nrg = 0;
else
nrg = 1;
for (int i = 1; i <= N; i ++)
if (V[i] == 1 && V[i+1] == 2)
nrg ++; // Cerinta 2
// La cerinta 3 ne cere numarul de pinguni maximi dintr un grup (adica cea mai lunga secventa de cifre 2)
for (int i = 1; i <= N; i ++){
if (V[i] == 2 && V[i+1] == 2){
nrpmx ++;
if (nrpmx > lgmx)
lgmx = nrpmx;
}
else{
V[i] = V[i+1];
nrpmx = 1;
}
}
//Afisam rezultatele
if (C == 1)
fout << nrp;
if (C == 2)
fout << nrg;
if (C == 3)
fout << lgmx;
return 0;
}
Vă mulțumim pentru vizita pe platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de sprijin suplimentar, vă încurajăm să ne contactați. Revenirea dumneavoastră ne bucură, iar dacă v-a plăcut, nu uitați să adăugați site-ul nostru la favorite!