Cerința
Un vector cu elemente 0 sau 1 se numește alternativ dacă oricum am lua două elemente vecine în vector, cel puțin unul dintre ele este 0.
Se dă un vector cu n elemente, numere naturale. Verificați dacă vectorul este alternativ.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele vectorului.
Date de ieșire
Programul va afișa pe ecran mesajul DA, dacă vectorul este alternativ, respectiv NU în caz contrar.
Restricții și precizări
1 ≤ n ≤ 1000 cele n numere citite vor fi 0 sau 1
C++
Răspunsuri la întrebare
Răspuns de
3
Deci un vector ca sa fie alternativ nu trebuie sa gasim doi de 1 pe pozitii consecutive asa ca put si simplu folosesti un bool pentru verificare de exemplu:
bool ok=1;
apoi verifici daca in vector sunt doi de 1 consecutivi de exemplu
for (int i=0;i <n-1;i++)
if (v [i] == 1 )
if (v [i] == v [i+1] )
{
ok=0;
i=n;
}
For-ul se opreste la n-1 deoarece daca oricum am verificat penultimul element cu ultimul, nu avem cu ce mai verifica ultimul, acesta ne fiind urmat de un element . Verificam daca pe pozitia care suntem exista un 1 in caz afirmativ verificam daca se afla 1 pe urmatoarea pozitie, in caz afirmativ punem ok=0 pentru ca nu e sir alternativ, in rest continuam, la final verificam cum stam cu ok, daca ramane 1 e alternativ, daca e 0 nu este alternativ.
Cod:
#include <iostream>
using namespace std;
int main ()
int n,v [50];
cin>>n;
for (int i=0;i <n;i++)
cin>>v [i];
bool ok=1;
for (int i=0;i <n;i++)
if (v [i] == 1 )
if (v [i] == v [i+1] )
{
ok=0;
i=n;
}
if (ok)
cout <<"DA";
else
cout <<"NU";
return 0;
}
Sper sa mearga bine si daca ai intrebari nu ezita sa intrebi.
bafta :)
bool ok=1;
apoi verifici daca in vector sunt doi de 1 consecutivi de exemplu
for (int i=0;i <n-1;i++)
if (v [i] == 1 )
if (v [i] == v [i+1] )
{
ok=0;
i=n;
}
For-ul se opreste la n-1 deoarece daca oricum am verificat penultimul element cu ultimul, nu avem cu ce mai verifica ultimul, acesta ne fiind urmat de un element . Verificam daca pe pozitia care suntem exista un 1 in caz afirmativ verificam daca se afla 1 pe urmatoarea pozitie, in caz afirmativ punem ok=0 pentru ca nu e sir alternativ, in rest continuam, la final verificam cum stam cu ok, daca ramane 1 e alternativ, daca e 0 nu este alternativ.
Cod:
#include <iostream>
using namespace std;
int main ()
int n,v [50];
cin>>n;
for (int i=0;i <n;i++)
cin>>v [i];
bool ok=1;
for (int i=0;i <n;i++)
if (v [i] == 1 )
if (v [i] == v [i+1] )
{
ok=0;
i=n;
}
if (ok)
cout <<"DA";
else
cout <<"NU";
return 0;
}
Sper sa mearga bine si daca ai intrebari nu ezita sa intrebi.
bafta :)
m1234:
putem inlocui bool cu altceva ? sau ce inseamna bool?
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Informatică,
9 ani în urmă
Matematică,
9 ani în urmă