Arama butonu
Bu konudaki kullanıcılar: 1 misafir
1
Cevap
562
Tıklama
0
Öne Çıkarma
C++ 2 Matriksin toplanması, çarpılması ve şifrelenmesi
P
2 yıl
Er
Konu Sahibi

Birinci matrix girdi şeklinde ikincisi ise rastgele olacak şekilde yazdırılıp, seçime göre çarpma veya toplama işlemi yapılması gerek. Seçim yapma kısmına kadar sorun yok fakat ondan sonrası çalışmıyor. Yardımcı olur musunuz?
< Resime gitmek için tıklayın >
[CODE]ISE 105-Programlaya Giriş
2. Ödev
Adımlar:
1- 5 x 5 boyutunda iki adet matris A ve B matrislerini oluşturunuz.
2- A matrisinin elemanları 0-10 arasında olmak üzere kullanıcıdan istenecektir. 
3- B matrisinin elemanları ise 0-10 arasında rastgele oluşan sayılardan oluşturulacaktır.
4- A ve B matrisleri ekrana yazdırılarak 5. adımdaki işlem menüsü gösterilecektir. 
5- İşlemler: 1-Toplama 2-Çarpma
6- Seçilen işleme göre A ve B matrisleri üzerinde işlem yapılarak C Sonuç matrisi oluşturulacak
ve ekranda gösterilecektir.
7- Kullanıcıdan şifrelemek istediği bir satır ve sütun numarası istenecektir. 
8- C sonuç matrisinin şifrelenmek istenen satır ve sütunu “*” karakteri ile şifrelenerek şifreli 
matris ekranda gösterilecektir.
9- Kullanıcıya devam etmek isteyip istemediği sorularak kullanıcı seçimine göre program tekrar 
A matrisini isteyecek veya “Hoşçakalın” mesajı görüntüleyerek çıkış yapacaktır.
Kaynak dosyanızın baş kısmında öğrenci bilgilerinizi ( Ad,soyad, öğrenci no), ödev no ve programın 
açıklamasını içeren aşağıdaki gibi yorum satırları bulunmalıdır.




///////////////////////////////




#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "Turkish");

int matrisA[5][5];
int matrisB[5][5];

cout << "A matrisinin elemanlarini giriniz:([0-10] arasi)" << endl;

int i, j;
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
cout << i + 1 << ".satir " << j + 1 << ".sutun ";
cin >> matrisA[j];
}
}

cout << "Girilen matrisA:" << endl;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++) {
cout << matrisA[j] << " ";

}
cout << endl;
}
cout << endl;

cout << "Rastgele matrisB:" << endl;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++) {
matrisB[5][5] = rand() % 10;
cout << matrisB[5][5] << " ";

}
cout << endl;
}
cout << endl;



int sonuc[5][5];
char secim;
cout << "Yapmak istediginiz islemi seciniz(Toplama icin'+', Carpma icin'*'" << endl;
cin >> secim;

switch (secim)
{
case '+':
for (int k = 0; k < 5; k++) {
for (int t = 0; t < 5; t++) {
sonuc[k][t] = 0;
sonuc[k][t] = matrisA[k][t] + matrisB[k][t];
}
}
break;

case'*':
for (int k = 0; k < 5; k++) {
for (int t = 0; t < 5; t++) {
sonuc[k][t] = 0;
for (int p = 0; k < 5; k++) {
sonuc[k][t] = matrisA[k][p] * matrisB[p][t];
}

}
}
break;

default:
cout << "Hatali islem sectiniz";
break;

}

for (int k = 0; k < 5; k++) {
for (int t = 0; t < 5; t++) {
cout << sonuc[k][t] << " ";
}
}



return 0;
}


[/CODE]



T
2 yıl
Yarbay

cin >> matrisA[j]; 'de 2 boyutlu matrisA tek boyutlu olmuş :)

Ayrıca kodun test edilebilirliği kötü. Her denemede 5x5 kullanıcıdan veri almak yerine, önceden elemanları tanımlan bir matriks kullan, o matriksle + / * işlemlerini doğru yaptıktan sonra kullanıcı verisini alma rutinini ekle.Bunları yaparak denedim, yanlış sonuç verdi ondan sonra "matrisB[5][5]" gözüme çarptı onu da matrisB[j] olarak değiştir. Bir de matrisB[sira][sutun] şeklinde kesin açıklayıcı degisken adları kullanıyorum, öneririm.



< Bu ileti mini sürüm kullanılarak atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.