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:

Geri
Yukarı