Informatică, întrebare adresată de iooana122, 9 ani în urmă


FLORI
Cerința
Copiii din clasa a V-a au hotărât să planteze flori, micșunele și panseluțe, în grădina din curtea școlii. Ei au plantat un număr de n flori astfel: un rând de micșunele, 2 rânduri de panseluțe, 3 rânduri de micșunele, 4 rânduri de panseluțe, și așa mai departe până au terminat toate florile. Fiecare rând conține un număr de 5 flori, ultimul rând putând să conțină mai puține flori. Copiii doresc să cunoască numărul de rânduri plantate, dacă ultimul rând a fost complet sau nu și ce flori s-au plantat pe ultimul rând.

Date de intrare
Programul citește de la tastatură un număr natural n, reprezentând numărul florilor.

Date de ieșire
Pe primul rând al ecranului se va afișa câte rânduri au plantat copii în total, pe al doilea rând al ecranului se va afișa mesajul DA, dacă ultimul rând este complet și mesajul NU dacă ultimul rând este incomplet, iar pe al treilea rând al ecranului se va afișa numele florilor plantate pe ultimul rând (micsunele sau panselute). Atenție, mesajul de pe rândul 2 se scrie cu litere mari iar cel de pe rândul 3 cu litere mici.

Restricții și precizări
0 < n ≤ 100000
Număr rând Grădina de flori
1 micșunele micșunele micșunele micșunele micșunele
2 panseluțe panseluțe panseluțe panseluțe panseluțe
3 panseluțe panseluțe panseluțe panseluțe panseluțe
4 micșunele micșunele micșunele micșunele micșunele
5 micșunele micșunele micșunele micșunele micșunele
6 micșunele micșunele micșunele micșunele micșunele
7 panseluțe panseluțe panseluțe panseluțe panseluțe
Exemplul 1
Intrare

20
Ieșire

4
DA
micsunele
Exemplul 2
Intrare

31
Ieșire

7
NU
panselute

Va rog sa imi dati o solutie la nivel de gimanziu

Răspunsuri la întrebare

Răspuns de blindseeker90
17
Nr de randuri este dat de catul impartirii lui n la 5(pentru ca sunt 5 flori pe rand). Daca restul impartirii lui n la 5 este mai mare ca 0, atunci au ramas flori in plus si mai trebuie adaugat un rand.
Pentru a verifica faptul ca sunt randuri complete, restul impartirii lui n la 5 trebuie sa fie 0(nu au ramas flori pe un rand aditional). Daca restul impartirii este mai mare ca 0, atunci exista un rand necompletat.
Pentru a vedea ce tip de flori este plantat:trebuie sa aduni numarul de randuri pentru fiecare tip de planta pana cand ajungi la numarul total de randuri. Observi ca randurile de flori sunt alternative: prima este micsunele, doua randuri panselute, apoi trei randuri micsunele, apoi 4 panselute
Deci observi ca daca este un numar impar, atunci sunt micsunele, daca este un numar par, atunci sunt panselute. In cod, o sa vezi ca dupa structura while in care adunam randuri pana le completam pe toate, o sa scad valoarea k cu 1 pentru ca a fost o data adunat in while 

#include <iostream>
using namespace std;

int main(){

int n,nr_randuri,ult_rand,i,s=0,k=1,tip_flori;
cin>>n;
nr_randuri=n/5;
ult_rand=n%5;
if(ult_rand>0){
nr_randuri=nr_randuri+1;
}
cout<<nr_randuri<<endl;
if(ult_rand==0){
cout<<"DA"<<endl;
}
else{
cout<<"NU"<<endl;
}
while(s<nr_randuri){
s=s+k;
k=k+1;

}
k=k-1;
if(k%2==1){
cout<<"micsunele";
}
else{
cout<<"panselute";
}
return 0;
}
Alte întrebări interesante