Aşağıdaki fonksiyonları yazıp main içerisinde seçenek listesi olarak çağırınız. 1. Bir kare matrisi okutan fonksiyon. 2. Bir kare matrisi yazdıran fonksiyon. 3. Bir kare matrisin 2 satırını yer değiştiren fonksiyon. 4. Bir kare matrisin köşegenlerini yer değiştiren fonksiyon. 5. Bir kare matrisin elemanlarının aritmetik ortalamasını hesaplayan fonksiyon.
Not: Program 6 girilene kadar sürekli çalışacaktır.
⛓ Program Kısımları
main’de kullanılacak değişkenleri ve matrisi tanımlamak.
Fonksiyonları main içerisinde switch kullanarak çağırmak.
Fonksiyonları yazmak.
👓 Çözüm Yöntemi
Herhangi bir satırın eleman indeksinde i sabitken j değişir.
Kod örneği: for(i=0; i<n; i++) { A[i][i] …}
Ters köşegenin her aij elemanı, (j=n-1-i) özelliğine sahiptir.
Kod örneği: for(i=0; i<n; i++) { A[i][n-1-i] …}
👩🔧 Çözüm Adımları
Değişkenler ve matrisin tanımlanması.
secenek 6’ya eşit olmadığı sürece:
Seçenek listesi yazdırılır.
secenek değeri girilir.
seceneke göre switch kullanarak fonksiyon çağırılacak.
secenek = 1: Matris okutma fonk. çağrılır.
secenek = 2: Matris yazdırma fonk. çağrılır.
secenek = 3: Satır yer değiştirme fonk. çağrılır.
secenek = 4: Köşegen yer değiştirme fonk. çağrılır.
secenek = 5: Ortalama hesaplama fonk. çağrılır.
secenek = 6: switch’ten çıkılır.
secenek = Diğer: Hata mesajı verilir.
1. Matris okutma fonksiyonu
Değişkenlerin tanımlanması.
Boyutun girilmesi.
İç içe döngüyle elemanların girilmesi.
Boyutun geri döndürülmesi.
2. Matris yazdırma fonksiyonu
Sayaçların tanımlanması.
İç içe döngüyle elemanların yazdırılması.
3. İki satır yer değiştirme fonksiyonu
Değişkenlerin tanımlanması.
İstenen satırların girilmesi.
Bir döngüyle istenen satırların elemanlarının geçici değişken kullanarak değiştirilmesi.
4. Köşegen yer değiştirme fonksiyonu
Değişkenlerin tanımlanması.
Bir döngüyle köşegenlerin elemanlarının geçici değişken kullanarak değiştirilmesi.
5. Ortalama hesaplama fonksiyonu
Değişkenlerin tanımlanması.
İç içe döngüyle elemanların toplanması.
Toplamın n2ye bölünmesi.
Ortalamanın geri döndürülmesi.
🤖 Kod
⚙ C++ Kodu
#include <iostream>
using namespace std;
int gir_mat(int ** & A) {
int i, j, n; // Değişkenlerin tanımlanması
cout << "Matrisin boyutunu giriniz: ";
cin >> n; // Boyutun girilmesi
// Matrisin oluşturulması
A = new int * [n];
for (i = 0; i < n; i++)
A[i] = new int[n];
// İç içe döngüyle elemanların girilmesi
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
cout << "A[" << i + 1 << "][" << j + 1 << "]=";
cin >> A[i][j];
}
}
return n; // Boyutun geri döndürülmesi
}
void print_mat(int ** & A, int n) {
int i, j; // Sayaçların tanımlanması
cout << "A Matrisi:\n"; // İç içe döngüyle elemanların yazdırılması
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
cout << A[i][j] << " ";
cout << endl;
}
}
void satir_degistir(int ** & A, int n) {
int i, satir1, satir2, temp; // Değişkenlerin tanımlanması
// İstenen satırların girilmesi
cout << "Degistirmek istediginiz satirlari girininz:\n";
cin >> satir1;
cin >> satir2;
// Bir döngüyle istenen satırların elemanlarının geçici değişken kullanarak değiştirilmesi
for (i = 0; i < n; i++) {
temp = A[satir1 - 1][i];
A[satir1 - 1][i] = A[satir2 - 1][i];
A[satir2 - 1][i] = temp;
}
cout << satir1 << ". satir &" << satir2 << ". satir degistirildi.\n";
}
void kosegen_degistir(int ** & A, int n) {
int i, temp; // Değişkenlerin tanımlanması
// Bir döngüyle köşegenlerin elemanlarının geçici değişken kullanarak değiştirilmesi
for (i = 0; i < n; i++) {
temp = A[i][i];
A[i][i] = A[i][n - 1 - i];
A[i][n - 1 - i] = temp;
}
cout << "Kosegenler degistirildi.\n";
}
float ortalama(int ** & A, int n) {
int toplam = 0, i, j; // Değişkenlerin tanımlanması
float ort;
// İç içe döngüyle elemanların toplanması
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
toplam += A[i][j];
ort = (float) toplam / (n * n); // Toplamın “n üzeri 2”ye bölünmesi
// Ortalamanın geri döndürülmesi
return ort;
}
int main() {
int n1 = 0, secenek, ** P;
do {
// Seçenek listesinin yazdırılması
cout << "============================== \n1- Yeni Matris girmek\n2- Matrisi yazdirmak\n3- 2 satiri degistirmek\n4- Kosegenleri degistirmek\n5- Elemanlar ortalamasini hesaplamak\n6- Exit\nYukaridakilerden bir tane seciniz:";
// Seçeneğin girilmesi
cin >> secenek;
switch (secenek) {
// Girilen seçeneğe göre istenen fonksiyonun çağrılması
case 1:
n1 = gir_mat(P);
break;
case 2:
print_mat(P, n1);
break;
case 3:
satir_degistir(P, n1);
break;
case 4:
kosegen_degistir(P, n1);
break;
case 5:
cout << "Ortalama= " << ortalama(P, n1) << endl;
break;
case 6:
break;
default:
cout << "Hata!, Girilecek sayi 1,6 arasinda olmalidir!\n";
}
} while (secenek != 6);
}
🐍 Python Kodu
def gir_mat():
# Boyutun girilmesi
print("Matrisin boyutunu giriniz: ")
n = int(input())
A = [[0 for i in range(n)] for i in range(n)]
# İç içe döngüyle elemanların girilmesi
print("A matrisini giriniz:")
for i in range(n):
for j in range(n):
print('A[{}][{}]'.format(i+1, j+1))
A[i][j] = int(input())
return A;
def print_mat(A):
# İç içe döngüyle elemanların yazdırılması
print("A Matrisi:")
for i in range(len(A)):
for j in range(len(A[0])):
print(A[i][j], ' ', end="")
print()
def satir_degistir(A):
# İstenen satırların girilmesi
print("Degistirmek istediginiz satirlari girininz:\n");
satir1 = int(input())
satir2 = int(input())
# Bir döngüyle istenen satırların elemanlarının geçici değişken kullanarak değiştirilmesi
for i in range(len(A)):
temp = A[satir1 - 1][i]
A[satir1 - 1][i] = A[satir2 - 1][i]
A[satir2 - 1][i] = temp
print("{}. satir & {}. satir degistirildi.".format(satir1, satir2))
# Bir döngüyle köşegenlerin elemanlarının geçici değişken kullanarak değiştirilmesi
def kosegen_degistir(A):
for i in range(len(A)):
temp = A[i][i]
A[i][i] = A[i][len(A) - 1 - i]
A[i][len(A) - 1 - i] = temp
print("Kosegenler degistirildi.")
def ortalama(A):
toplam = 0
# İç içe döngüyle elemanların toplanması
for i in range(len(A)):
for j in range(len(A)):
toplam += A[i][j]
# Toplamın “n üzeri 2”ye bölünmesi
ort = toplam / (len(A)*len(A))
return ort
while True:
# Seçenek listesinin yazdırılması
print("""==============================
1- Yeni Matris girmek\n2- Matrisi yazdirmak
3- 2 satiri degistirmek\n4- Kosegenleri degistirmek
5- Elemanlar ortalamasini hesaplamak\n6- Exit
Yukaridakilerden bir tane seciniz:""")
secenek = int(input()) # Seçeneğin girilmesi
# Girilen seçeneğe göre istenen fonksiyonun çağrılması
if secenek == 1:
A = gir_mat()
elif secenek == 2:
print_mat(A)
elif secenek == 3:
satir_degistir(A)
elif secenek == 4:
kosegen_degistir(A)
elif secenek == 5:
print('Ortalama= ', ortalama(A))
elif secenek == 6:
break
else:
print("Hata!, Girilecek sayi 1,6 arasinda olmalidir!")
☕ Java Kodu
import java.util.*;
public class KareMatris {
static final int max = 10;
static Scanner input = new Scanner(System.in);
public static void main(String arg[]) {
int n1 = 0, secenek;
int P[][] = new int[max][max];
do {
// Seçenek listesinin yazdırılması
System.out.printf("========================= ===== \n1- Yeni Matris girmek\n2- Matrisi yazdirmak\n3- 2 satiri degistirmek\n4- Kosegenleri degistirmek\n5- Elemanlar ortalamasini hesaplamak\n6- Exit\nYukaridakilerden bir tane seciniz:");
// Seçeneğin girilmesi
secenek = input.nextInt();
// Girilen seçeneğe göre istenen fonksiyonun çağrılması
switch (secenek) {
case 1:
n1 = gir_mat(P);
break;
case 2:
print_mat(P, n1);
break;
case 3:
satir_degistir(P, n1);
break;
case 4:
kosegen_degistir(P, n1);
break;
case 5:
System.out.printf("Ortalama= %f\n", ortalama(P, n1));
break;
case 6:
break;
default:
System.out.printf("Hata!, Girilecek sayi 1,6 arasinda olmalidir!\n");
}
} while (secenek != 6);
}
static int gir_mat(int a[][]) {
// Değişkenlerin tanımlanması
int i, j, n;
// Boyutun girilmesi
System.out.printf("Matrisin boyutunu giriniz: ");
n = input.nextInt();
// İç içe döngüyle elemanların girilmesi
for (i = 0; i < n; i++)
for (j = 0; j < n; j++) {
System.out.printf("P[%d][%d]=", i + 1, j + 1);
a[i][j] = input.nextInt();
}
// Boyutun geri döndürülmesi
return n;
}
static void print_mat(int a[][], int n) {
// Sayaçların tanımlanması
int i, j;
// İç içe döngüyle elemanların yazdırılması
System.out.printf("P Matrisi:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
System.out.printf("%d\t", a[i][j]);
System.out.printf("\n");
}
}
static void satir_degistir(int a[][], int n) {
// Değişkenlerin tanımlanması
int i, satir1, satir2, temp;
// İstenen satırların girilmesi
System.out.printf("Degistirmek istediginiz satirlari girininz:\n");
satir1 = input.nextInt();
satir2 = input.nextInt();
// Bir döngüyle istenen satırların elemanlarının geçici değişken kullanarak değiştirilmesi
for (i = 0; i < n; i++) {
temp = a[satir1 - 1][i];
a[satir1 - 1][i] = a[satir2 - 1][i];
a[satir2 - 1][i] = temp;
}
System.out.printf("%d. satir & %d. satir degistirildi.\n", satir1, satir2);
}
static void kosegen_degistir(int a[][], int n) {
// Değişkenlerin tanımlanması
int i, temp;
// Bir döngüyle köşegenlerin elemanlarının geçici değişken kullanarak değiştirilmesi
for (i = 0; i < n; i++) {
temp = a[i][i];
a[i][i] = a[i][n - 1 - i];
a[i][n - 1 - i] = temp;
}
System.out.printf("Kosegenler degistirildi.\n");
}
static float ortalama(int a[][], int n) {
// Değişkenlerin tanımlanması
int toplam = 0, i, j;
float ort;
// İç içe döngüyle elemanların toplanması
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
toplam += a[i][j];
// Toplamın “n üzeri 2”ye bölünmesi
ort = (float) toplam / (n * n);
// Ortalamanın geri döndürülmesi
return ort;
}
}
💡 Notlar
Programın switch case’lerini sırayla yapmaması için her case’in sonunda switch kırılır.
Asal köşegenin her aij elemanı, (i=j) özelliğine sahiptir.