🕶️Şifreleme Mantığı
❓ Soru
Girilen bir metin üzerinde aşağıdaki işlemleri yapan programı yazınız: 1. Metindeki harf sayısı ve rakam sayısını bulma. 2. Küçük harfleri büyük harflere ve rakamları (yeni_rakam = 9 - rakam)
e göre çevirme. 3. Metnin son halini tersten yazdırma.
⛓ Program Kısımları
Metni girmek.
Metin üzerinde işlemleri yapmak.
Sonuçları yazdırmak.
👓 Çözüm Yöntemi
Büyük harfi küçük harfe çevirmek için
küçük_ch = ch – 'A' + 'a'
eşitliği kullanılırASCII sayısal örnek:
'h' = 'H' – 'A' + 'a' 104 = 72 – 65 + 97
Küçük harfi büyük harfe çevirmek için
büyük_ch = ch – 'a' + 'A'
eşitliği kullanılır.ASCII sayısal örnek:
'H' = 'h' – 'a' + 'A' 72 = 104 – 97 + 65
Bir dizinin tersten yazdırılması için,
for
un sayacıdizinin uzunluğu-1
den başlar 0’a eşit olana kadar sürer.
👩🔧 Çözüm Adımları
Değişkenlerin tanımlanması.
Metnin girilmesi.
Harfler dizisinin oluşturulması.
Metnin
string
denchar
dizisine çevrilmesi.Metnin uzunluğu kadar dönen döngünün oluşturulması.
Karakterlerin kontrol edilmesi.
Sonuçların yazdırılması.
🤖 Kod
⚙ C++ Kodu
#include <iostream>
using namespace std;
int main() {
// Değişkenlerin tanımlanması
int i, harf_sayi = 0, rakam_sayi = 0;
string metin;
getline(cin, metin); // Metnin girilmesi
cout << metin;
// Metnin uzunluğu kadar dönen döngünün oluşturulması
for (i = 0; i < metin.length(); i++) {
// Karakterlerin kontrol edilmesi.
if (metin[i] >= 'a' && metin[i] <= 'z') {
metin[i] = (char)(metin[i] - 'a' + 'A');
harf_sayi++;
} else
if (metin[i] >= 'A' && metin[i] <= 'Z')
harf_sayi++;
else if (metin[i] >= '0' && metin[i] <= '9') {
metin[i] = (char)('9' - metin[i] + '0');
rakam_sayi++;
}
}
// Sonuçların yazdırılması
cout << "Harf sayisi= " << harf_sayi << endl;
cout << "Rakam sayisi= " << rakam_sayi << endl;
for (i = metin.length() - 1; i >= 0; i--)
cout << metin[i];
}
🐍 Python Kodu
harf_sayi = 0; rakam_sayi = 0 # Değişkenlerin tanımlanması
metin = list(str(input())) # Metnin girilmesi
# Metnin uzunluğu kadar dönen döngünün oluşturulması
for karakter in metin:
# Karakterlerin kontrol edilmesi.
if karakter >= 'a' and karakter <= 'z':
karakter = chr(ord(karakter) - ord('a') + ord('A'))
harf_sayi += 1
elif karakter >= 'A' and karakter <= 'Z':
harf_sayi += 1
elif karakter >= '0' and karakter <= '9':
karakter = chr(ord('9') - ord(karakter) + ord('0'))
rakam_sayi += 1
# Sonuçların yazdırılması
print("Harf sayisi= ", harf_sayi)
print("Rakam sayisi= ", rakam_sayi)
sonuc = ''.join(metin)
print(sonuc[::-1])
☕ Java Kodu
import java.util.*;
public class Sifreleme {
public static void main(String arg[]) {
Scanner input = new Scanner(System.in);
// Değişkenlerin tanımlanması
int i, harf_sayi = 0, rakam_sayi = 0;
String metin;
metin = input.nextLine(); // Metnin girilmesi
char harfler[] = new char[metin.length()]; // Harfler dizisinin oluşturulması
harfler = metin.toCharArray(); // Metnin string’den char dizisine çevrilmesi
// Metnin uzunluğu kadar dönen döngünün oluşturulması
for (i = 0; i < metin.length(); i++) {
// Karakterlerin kontrol edilmesi.
if (harfler[i] >= 'a' && harfler[i] <= 'z') {
harfler[i] = (char)(harfler[i] - 'a' + 'A');
harf_sayi++;
} else
if (harfler[i] >= 'A' && harfler[i] <= 'Z')
harf_sayi++;
else if (harfler[i] >= '0' && harfler[i] <= '9') {
harfler[i] = (char)('9' - harfler[i] + '0');
rakam_sayi++;
}
}
// Sonuçların yazdırılması
System.out.println("Harf sayisi= " + harf_sayi);
System.out.println("Rakam sayisi= " + rakam_sayi);
for(i = metin.length()-1; i>=0; i--)
System.out.print(harfler[i]);
}
}
🎉 Ekran Çıktısı
QNa r^% 843$
Harf sayisi= 4
Rakam sayisi= 3
$651 %^R ANQ
💡 Notlar
Dizinin uzunluğunu
.legnth()
fonksiyonunun yardımıyla elde ettik.Metnin harflerini tek tek kontrol etmek için metni
char
dizisine atadık.char
tipi üzerinde yapılan matematiksel işlemlerin sonuçlarıint
tipindedir, bu yüzden sonucuchar
a dönüştürdük.
Last updated
Was this helpful?