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

Se consideră algoritmul alăturat, descris în pseudocod. S-a notat cu x%y restul împărţirii numărului natural x la numărul natural nenul y şi cu [z] partea întreagă a numărului real z.
a) Scrieţi valoarea care se va afişa dacă se citeşte pentru n valoarea 296385, iar pentru k valoarea 3.

b) Dacă se citeşte pentru k valoarea 4, scrieţi
cea mai mare valoare de 5 cifre care poate fi citită pentru n astfel încât numărul afişat în urma executării algoritmului să fie 1.

c) Scrieţi programul C/C++ corespunzător algoritmului dat.

d) Scrieţi în pseudocod un algoritm echivalent cu algoritmul dat, în care să se înlocuiască structura repetitivă cât timp...execută, cu o structură repetitivă
pentru...execută.

citeşte n,k (numere naturale)
p <- 1
┌cât timp n>0 şi k>0 execută
│ c <- n%10
│ ┌dacă c%2=1 atunci
│ │ p <- p*c
│ └■
│ n <- [n/10]
│ k <- k-1
└■
scrie p

Ma intereseaza subpunctul d in special

Răspunsuri la întrebare

Răspuns de lucaciucandrei
7

algoritmul tau face produsul primelor k numere impare de la coada

a) 15

b) 98888 (ultimele 4 nr sunt pare, deci produsul va ramane 1)

c)

#include<iostream>

using namespace std;

int main() {

   int n, k, p = 1, c;

   cin >> n >> k;

   while (n > 0 && k > 0) {

       c = n % 10;

       if (c % 2 == 1)

           p *= c;

       n /= 10;

       k--;

   }

   cout << p;

   return 0;

}

d)

citeşte n,k (numere naturale)

p <- 1

┌pentru i <- 1, k execută

│ c <- n%10

│ ┌dacă c%2=1 atunci

│ │ p <- p*c

│ └■

│ n <- [n/10]

│ k <- k-1

└■

scrie p

Alte întrebări interesante