Kezdőoldal » Számítástechnika » Programozás » A "börtönőrös" feladat hogy szól?

A "börtönőrös" feladat hogy szól?

Figyelt kérdés

Van egy olyan feladat, hogy egy börtönőr körbe jár a börtönben, és amikor elmegy egy cella mellett, elfordítja a kulcsát a cella zárdában, amitől az ha ki van nyitva, bezáródik, ha zárcavcan, kinyílik. Mindig, amikor körbeér, a következő körben már csak minden második cellánál áll meg, aztán már csak minden harmadiknál, minden negyediknél (...). A kérdés, hogy végül hányás cella marad nyitva.


...Tudtommal így van a feladat, de nem vagyok benne biztos.

A tömböknél volt róla szó.

A kérdésem, hogy eredetileg hogy szól a feladat?



2018. okt. 2. 22:34
1 2
 11/12 A kérdező kommentje:

Ez az én megoldásom:


int i, j;

char c[101];


for (i = 0; i < 101; i++) c[i] = 'z';


for (j = 1; j < 101; j++) {

for (i = 1;i < 101; i++) {

if (i % j == 0) {

// printf("%d\t%d\t%c\n", j, i, c[i]);

if (c[i] == 'n') c[i] = 'z';

else c[i] = 'n';

}

}

}


for (i = 0; i < 10; i++)

for (j = 0; j < 10; j++) printf("\t%c%s", c[i*j], j == 9 ? "\n\n" : "");



A négyzetszám számú cellák nyitva lesznek, ha így helyes

2018. okt. 5. 17:31
 12/12 tabaki ***** válasza:
100%

Ahogy látom, helyes. Az eredmény áttekinthetőbb lenne, ha a végére még odacsempésznéd ezt a sort:

for (i = 0; i < 101; i++) if (c[i] == 'n') printf("%d ", i);


Itt az én változatom, pontosabban: Gyakorlatilag változtatás nélkül átvettem SimkoL pascal-programját, az 1-től indexelt tömbbel együtt -- tehát cella[0] felhasználatlanul árválkodik, de ez egyszer talán megbocsátható az a haszontalan bájt:


#include <stdio.h>


const int cellaszam = 101;

const char szabad = 0;


int main(){

      char cella[cellaszam];

      int i, n;

      for (i = 1; i < cellaszam; i++) cella[i] = szabad;

      for (i = 2; i < cellaszam; i++){

            n = i;

            while (n < cellaszam){

                  cella[n] = !cella[n];

                  n += i;

                  }

            }

      for (i = 1; i < cellaszam; i++) if (cella[i] == szabad) printf("%d ", i);

      return 0;

}

2018. okt. 5. 19:16
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!