Şimdi Ara

C++ Matriste en büyük değeri bulmada sorun.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
1.165
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar yapmakta olduğum bir çalışma için boyutları girilen bir matrisi data dosyasından okuyacak ve her bir sütündaki mutlak değerce en büyük sayıyı bulup ekrana yazdıracak bir program gerekiyordu. Ben de bunu C++'da yazdım. Fakat gel gör ki program 3x3, 5x5 gibi küçük matrislerde sorunsuz çalışırken, bana asıl lazım olan 4000x6, 2000x6 gibi matrislerde son 10-15 değerden en büyüğünü yazmaya başladı. Yani hatalı çalışıyor. Programın kodu aşağıdaki gibi. Yardımcı olursanız işim çok kolaylaşacak:

     

    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    #include <iomanip>
    #include <cmath>


    using namespace std;

    int main(int argc, char *argv[])
    {
    cout << "MAX ABSOLUTE VALUE FINDER\n\n";
    cout << "======================================================\n";
    cout << "\n";
    cout << "BU PROGRAM BOYUTLARI GIRILEN BIR MATRISIN\n";
    cout << "HER BIR SUTUNUNDAKI MAX MUTLAK DEGERI VERIR\n\n";
    cout << "\n";
    cout << "======================================================\n\n\n";


    float u[4000][25];
    float absu[4000][25];

    int n;
    int m;
    float max=0;

    cout << "Satir sayisini giriniz\n" << endl;
    cout << "El Centro icin = 4000" << endl;
    cout << "Northridge icin = 2000\n" << endl;
    cin >> n;

    n=n+1;

    cout << "\n";
    cout << "\n";

    cout << "Sutun sayisini giriniz\n" << endl;
    cin >> m;
    cout << "\n";
    cout << "\n";

    ifstream ifile;
    ifile.open ("data.txt");

    absu[1][2]=0;



    for (int i=2; i<=n+1; i++)
    {
    for (int j=2; j<=m+1; j++)
    {

    ifile >> u[i][j];
    cout << u[i][j] << "\t";
    absu[i][j]=abs(u[i][j]);

    }



    cout << endl;

    }

    cout << "\n";
    cout << "max degerler:\n";



    for (int j=2; j<=m+1; j++)
    {
    for (int i=2; i<=n+1; i++)
    {

    if (absu[i-1][j] < absu[i][j])
    {
    max=absu[i][j];
    }


    }

    cout << max << endl;

    }



    ifile.close ();



    system("PAUSE");
    return EXIT_SUCCESS;
    }









  • algoritmanda hata var.sen elemani sadece bir onceki elemanla karsilastirip sonuc max'a atamissin.eger en sondaki elemanlar digerlerinden cok kucukte olsa bir onceki elemandan buyukse max'a en son onu atadigi icin onu yazacaktir.5*5 ve 3*3 te dahi boyle olacaktir. if icine "absu[i-1][j] < absu[ i ][j]" yerine "max< absu[ i ][j]" yazarsan sorunun cozulecektir.
    edit-budut:yeni farkettim 6 gun gecmis ,sen cozumu coktan bulmussudur.buralar pek kimse ugramiyor heralde :D



    < Bu mesaj bu kişi tarafından değiştirildi blackzeros -- 20 Mart 2009; 10:27:41 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.