Algoritma ve Programlama ödevi

enes.aslan10

Hectopat
Katılım
10 Mayıs 2016
Mesajlar
4
C++ üzerinden yapılacak. Dizileri nasıl tanımlayacağımı bilmiyorum. Sadece o konuda yardım eden olursa çok sevinirim.
  • İki adet 3 satır ve 2 sütundan oluşan çok boyutlu bir dizi tanımlayın. Kullanıcıdan bu dizilerin değerlerini isteyip aşağıdaki işlemleri yapın.
  • Program Çıktısı:
  • Matris Toplama
  • Matris Çıkarma
  • Matris Çarpma
  • Matris Bölme
  • Çıkış
 
Son düzenleyen: Moderatör:
Açıkçası ben bir kısmını böyle yapardım.

C++:
#include <stdio.h>

using namespace std;

typedef enum{
    topla = 1,
    cikar,
    carp,
    cikis,
}islemListesi;

void topla(int &dizi1, int &dizi2);
void cikar(int &dizi1, int &dizi2);
void carp(int &dizi1, int &dizi2);

int main(){
    int dizi1[3][2];
    int dizi2[3][2];
  
    cout << "ilk matrisi girin" << endl;
    for(int i = 0; i < 3; i++){
        for(int j=0; j < 2; j++){
            cout << "[" << i "][" << j << "]";
            cin >> dizi1[i][j];
        }
    }
  
    cout << "ikinci matrisi girin" << endl;
    for(int i = 0; i < 3; i++){
        for(int j=0; j < 2; j++){
            cout << "[" << i "][" << j << "]";
            cin >> dizi1[i][j];
        }
    }
  
    cout << "yapmak istediginiz islem:" << endl \
        << "1 - topla" << endl << "2 - cikar" << \
         endl << "3 - carp" << endl << \
        "4 - cikis" << endl << "giris:";
    int giris;
    while(1){
        cin >> giris;
    switch((islemListesi) giris){
        case topla:
            topla(&dizi1, &dizi2);
            break;
        case cikar:
            cikar(&dizi1, &dizi2);
            break;
        case carp:
            carp(&dizi1, &dizi2);
            break;
        case cikis:
            exit(0);
        default:
            cout << "hatali giris";
            break;
    }
    }

    return 0;
}
 
Açıkçası ben bir kısmını böyle yapardım.

C++:
#include <stdio.h>

using namespace std;

typedef enum{
    topla = 1,
    cikar,
    carp,
    cikis,
}islemListesi;

void topla(int &dizi1, int &dizi2);
void cikar(int &dizi1, int &dizi2);
void carp(int &dizi1, int &dizi2);

int main(){
    int dizi1[3][2];
    int dizi2[3][2];
   
    cout << "ilk matrisi girin" << endl;
    for(int i = 0; i < 3; i++){
        for(int j=0; j < 2; j++){
            cout << "[" << i "][" << j << "]";
            cin >> dizi1[i][j];
        }
    }
   
    cout << "ikinci matrisi girin" << endl;
    for(int i = 0; i < 3; i++){
        for(int j=0; j < 2; j++){
            cout << "[" << i "][" << j << "]";
            cin >> dizi1[i][j];
        }
    }
   
    cout << "yapmak istediginiz islem:" << endl \
        << "1 - topla" << endl << "2 - cikar" << \
         endl << "3 - carp" << endl << \
        "4 - cikis" << endl << "giris:";
    int giris;
    while(1){
        cin >> giris;
    switch((islemListesi) giris){
        case topla:
            topla(&dizi1, &dizi2);
            break;
        case cikar:
            cikar(&dizi1, &dizi2);
            break;
        case carp:
            carp(&dizi1, &dizi2);
            break;
        case cikis:
            exit(0);
    }
    }

    return 0;
}
hocam hata verdi ama
 
E nasıl tanımladı? 3x2'lik 2 matrisin nasıl çarpılmasını bekliyor?
Benden bu kadar, gerisi sana kalmış.

Return tipi nasıl olsun bilemedim. Array'i döndürsen dert, class'ı döndürsen dert.
Kod:
#include <iostream>
#include <string>
#include <array>
#include <iomanip>



class Matrix {
public:
    static constexpr auto ROW{ 3 };
    static constexpr auto COL{ 2 };
    static constexpr auto SPACE{ 3 };
    using m_array = std::array<std::array<int, COL>, ROW>;
    m_array arr{};

    void init() {
        for (auto i{ 0 }; i < ROW; ++i) {
            for (auto j{ 0 }; j < COL; ++j) {
                std::cout << i << ", " << j << " konumu icin deger gir: ";
                std::cin >> arr[i][j];
            }
        }
    }

    friend std::ostream& operator<<(std::ostream& o, const Matrix& m) {
        o << std::endl;

        for (auto i{ 0 }; i < ROW; ++i) {
            for (auto j{ 0 }; j < COL; ++j) {
                o << std::setw(SPACE) << m.arr[i][j];
            }
            o << std::endl;
        }
       
        return o;
    }

    Matrix add(const Matrix& o)const {
        return *this + o;
    }

    Matrix subtract(const Matrix& o)const {
        return *this - o;
    }

    Matrix operator+(const Matrix& o)const {
        Matrix m;
        for (auto i{ 0 }; i < ROW; ++i)
            for (auto j{ 0 }; j < COL; ++j)
                m.arr[i][j] = arr[i][j] + o.arr[i][j];

        return m;
    }

    Matrix& operator+=(const Matrix& o) {
        for (auto i{ 0 }; i < ROW; ++i)
            for (auto j{ 0 }; j < COL; ++j)
                arr[i][j] += o.arr[i][j];

        return *this;
    }

    Matrix operator-(const Matrix& o)const {
        Matrix m;
        for (auto i{ 0 }; i < ROW; ++i)
            for (auto j{ 0 }; j < COL; ++j)
                m.arr[i][j] = arr[i][j] - o.arr[i][j];

        return m;
    }

    Matrix& operator-=(const Matrix& o) {
        for (auto i{ 0 }; i < ROW; ++i)
            for (auto j{ 0 }; j < COL; ++j)
                arr[i][j] -= o.arr[i][j];

        return *this;
    }
};

int main() {
    Matrix a1, a2, a3, a4;
    a1.init();
    a2.init();
    auto a5 = a1 + a2;
    std::cout << a5 << std::endl;

}
 
Son düzenleme:
Araştır bul diyor.
Var olmayan bir şeyi araştırmak güzel kafaymış. Hocana söyle de ne kullanıyorsa bize de versin.
Kod paylaştım, bakarsın.
Dersle bu kadar ilgili hoca ve öğrenciyi görünce hevesim kaçtı. Size kolay gelsin.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı