Valaki meg tudná nézni, hogy mi lehet itt a baj?
Írtam egy programot, ami elvileg amikor lefuttatom, akkor működik is, de amikor beküldöm ellenőrzésre, akkor a rendszer mindig visszadobja azzal, hogy hibás. Megnéznétek, hogy mi lehet a probléma?
A feladat:
Tekintsük a következő sorozatképzési szabályt:
Ha ai páros, akkor ai+1 = ai / 2 , egyébként ai+1 = 3ai + 1.
Az a0 = 3 kezdőértékről indulva a fenti szabály az alábbi sorozatot generálja:
3 10 5 16 8 4 2 1 4 2 1 4 2 1 4 2 1 ...
A Collatz-sejtés (1937) szerint a fenti szabályt tetszőleges pozitív a0 kezdőértékre alkalmazva, előbb-utóbb eljutunk a 4 2 1 számhármas végtelen ismétlődéséhez. Ezt a sejtést még senki nem bizonyította, sőt igen nehéz matematikai problémaként tartják számon.
Írj C-programot, mely beolvassa a0 értékét, majd kiírja, hogy melyik az a legkisebb i index, melyre ai = 1. A fenti példára a helyes válasz 7.
A programom:
#include <stdio.h>
int main(void) {
int z;
int x;
printf("", z);
scanf("%d", &z);
if(z==1) {
printf("0");
return 0;
}
do {
if(z%2==0) {
(++x);
z=z/2;
}
else(z=3*z+1, ++x);
}
while(z>1);
if(z==1) {
printf("%d", x);
}
return 0;
}
else(z=3*z+1, ++x);
Ez mi? Ilyet lehet?
Else után nem egy {} blokkba kellene tenni az utasításokat?
Próbáld ki!
Amúgy értem, hogy miért működhet.. állhat az else után egyetlen utasítás {} blokk nélkül és mivel zárójelben van, gondolom annak veszi, de egy másik compiler simán hibának jelezheti.
És ez mi az elején?
printf("", z);
Ugyanúgy nem fogadja el, de nem értem miért.
Ilyeneket írogat:
Input:
2
Your output:
32765
Correct output:
1
De nekem nem az van az outputon, ha beírom, hogy kettő. Kiírja szépen nekem is, hogy az 1. Szóval én egyszerűen nem értem.
Kicsit átírva:
1. Ciklusváltozónak használd inkább az i (,j,k,l,...) jelöléseket - az az elterjedt, illetve ha már a példában a-val jelölődik a sorozat, legyen az.
2. Az else ág és a ciklusváltozó növelése teljesen katyvasz.
3. A ciklusváltozónak nem volt kezdőértéke, így memóriaszemét került bele.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!