11'e tam bölünebilen en büyük üç basamaklı sayıyı LOOP ve FOR ile bulmak

onuraydin00

Kilopat
Katılım
31 Ocak 2017
Mesajlar
1.423
Çözümler
3
Arkadaşlar, böyle bir ödev aldım:
•11'e tam bölünebilen en büyük üç basamaklı sayıyı LOOP ve FOR döngüsü kullanarak bulan ve ekrana yazdıran programın algoritmasını sözde kod olarak yazınız.
Yardımcı olabilecek birileri var mı?
 
Başlığı yanlışlıkla en küçük olarak okuduğum için en küçük olanın algoritmasını yazmıştım. Eğer işiniz en küçük olanı bulmak ise, bundan yararlanabilirsiniz.

Sahte kod (pseudocode) ile açıklarsam, algoritma şöyle olabilir:
Kod:
if((sayi % 11 == 0) && (sayi/100 > 0)){

print "Sayı 11'e bölünebilen 3 basamaklı en küçük tam sayı."


}
Eğer sayının bölümünden kalan 0 ise, yani sayı tam bölünüyorsa, ve sayının 100 ile bölümü 0'dan büyük ise, o sayı 11 ile tam bölünen, 3 basamaklı en küçük sayıdır.

Ben C++ bildiğim için C++ ile yazdım:
C++:
#include <iostream>

using namespace std;


int main(){

    int sayi = 0;

    while(true){

        if((sayi % 11 == 0) && (sayi / 100 > 0)){

            cout<<sayi<<" sayisi, 11 ile bolunebilen 3 basamakli en kucuk tam sayidir."<<endl;
            break;

        }
        else{

            sayi++;

        }


    }


    return 0;
}
 
Son düzenleme:
Pseudocode olarak yapılacaksa müfredatta şu şekilde geçiyor.

Kod:
for i >= 100 and i < 999 to i - 1 do
    if i % 11 == 0 then
        print "Number is: " + i
    end if
end for

Sahte kod (pseudocode) ile açıklarsam, algoritma şöyle olabilir:
Kod:
if((sayi % 11 == 0) && (sayi/100 > 0)){

print "Sayı 11'e bölünebilen 3 basamaklı en küçük tam sayı."


}
Eğer sayının bölümünden kalan 0 ise, yani sayı tam bölünüyorsa, ve sayının 100 ile bölümü 0'dan büyük ise, o sayı 11 ile tam bölünen, 3 basamaklı en küçük sayıdır.

Ben C++ bildiğim için C++ ile yazdım:
C++:
#include <iostream>

using namespace std;


int main(){

    int sayi = 0;

    while(true){

        if((sayi % 11 == 0) && (sayi / 100 > 0)){

            cout<<sayi<<" sayisi, 11 ile bolunebilen 3 basamakli en kucuk tam sayidir."<<endl;
            break;

        }
        else{

            sayi++;

        }


    }


    return 0;
}
Algoritman yanlış. Bu en büyük değil en küçük sayıyı verecektir. Sonsuz döngü ile en büyük sayıyı bulamayacaksın. Bir aralık tanımlaman şart.
 
Pseudocode olarak yapılacaksa müfredatta şu şekilde geçiyor.

Kod:
for i >= 100 and i < 999 to i - 1 do
    if i % 11 == 0 then
        print "Number is: " + i
    end if
end for

Algoritman yanlış. Bu en büyük değil en küçük sayıyı verecektir.
Muhtemelen doğru olan bu. Yardımlarınız için çok teşekkür ediyorum.
 
Milyonları konuşuyor olsaydık "11'e bölünme kuralı" kullanarak bir çözüm önerirdim. Ancak 3 basamak için doğrudan modunu alıp 0'mı diye kontrol etmek daha basit.

psudo olarak ise;
Kod:
Initialize the max.
for i  ⃪ 999 to 100 do
    if (i mod 11 == 0) then
        max  ⃪ i
        break
    end if
end for
Output: max
 
Son düzenleme:

Yeni konular

Geri
Yukarı