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.
Asal köşegenin her aij elemanı, (i=j) özelliğine sahiptir.
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
defgir_mat():# Boyutun girilmesiprint("Matrisin boyutunu giriniz: ") n =int(input()) A = [[0for i inrange(n)] for i inrange(n)]# İç içe döngüyle elemanların girilmesiprint("A matrisini giriniz:")for i inrange(n):for j inrange(n):print('A[{}][{}]'.format(i+1, j+1)) A[i][j] =int(input())return A; defprint_mat(A):# İç içe döngüyle elemanların yazdırılmasıprint("A Matrisi:")for i inrange(len(A)):for j inrange(len(A[0])):print(A[i][j], ' ', end="")print()defsatir_degistir(A): # İstenen satırların girilmesiprint("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ştirilmesifor i inrange(len(A)): temp = A[satir1 -1][i] A[satir1 -1][i] = A[satir2 -1][i] A[satir2 -1][i] = tempprint("{}. satir & {}. satir degistirildi.".format(satir1, satir2))# Bir döngüyle köşegenlerin elemanlarının geçici değişken kullanarak değiştirilmesi defkosegen_degistir(A):for i inrange(len(A)): temp = A[i][i] A[i][i] = A[i][len(A)-1- i] A[i][len(A)-1- i] = tempprint("Kosegenler degistirildi.")defortalama(A): toplam =0# İç içe döngüyle elemanların toplanmasıfor i inrange(len(A)):for j inrange(len(A)): toplam += A[i][j]# Toplamın “n üzeri 2”ye bölünmesi ort = toplam / (len(A)*len(A))return ortwhileTrue:# Seçenek listesinin yazdırılmasıprint("""==============================1- Yeni Matris girmek\n2- Matrisi yazdirmak3- 2 satiri degistirmek\n4- Kosegenleri degistirmek5- 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:breakelse:print("Hata!, Girilecek sayi 1,6 arasinda olmalidir!")
☕ Java Kodu
importjava.util.*;publicclassKareMatris {staticfinalint max =10;staticScanner input =newScanner(System.in);publicstaticvoidmain(String arg[]) {int n1 =0, secenek; int P[][] =newint[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) { case1: n1 =gir_mat(P);break;case2:print_mat(P, n1);break;case3:satir_degistir(P, n1);break;case4:kosegen_degistir(P, n1);break;case5:System.out.printf("Ortalama= %f\n",ortalama(P, n1));break;case6:break;default:System.out.printf("Hata!, Girilecek sayi 1,6 arasinda olmalidir!\n"); } } while (secenek !=6); }staticintgir_mat(int a[][]) { // Değişkenlerin tanımlanmasıint i, j, n; // Boyutun girilmesiSystem.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ülmesireturn n; }staticvoidprint_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"); } }staticvoidsatir_degistir(int a[][],int n) { // Değişkenlerin tanımlanmasıint i, satir1, satir2, temp;// İstenen satırların girilmesiSystem.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ştirilmesifor (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); }staticvoidkosegen_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ştirilmesifor (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"); }staticfloatortalama(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ülmesireturn ort; }}
💡 Notlar
Programın switch case’lerini sırayla yapmaması için her case’in sonunda switch kırılır.