Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
872
Tıklama
0
Öne Çıkarma
C ile ilgili yardım !
T
13 yıl (174 mesaj)
Çavuş
Konu Sahibi

C öğrenmeye çalışan bir kardeşiniz olarak yardımınıza ihtiyacım var. Değerleri dışardan atanacak bir kare matrisin( 2 veya 3 boyutlu) toplamı en büyük olan satırının ve sütünün

değerini hesaplayan bir kod yazmaya çalışıyorum.Örnek vermek gerekirse 1 0 1 matrisi satırları için (1+0+1, 2+3+4, 0+8+3)=max(2,9,11)=11 gibi.
2 3 4
0 8 3



#include<stdio.h>
int main(void)

{
int i,j,n;
int array_matris[ı][j];


printf("Kare Matrisin Boyutunu Belirtiniz(2 veya 3):\n");
scanf("%d",&n);

for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++){


printf( "%d. satır %d sütünün değerini giriniz \n",i,j );
scanf( "%d", &array_matris [ı][j] );
}

getchar( );
return 0;

}



Matrise değer atanması için yukardaki kodu yazdım ama exe dosyasını çalıştırdığım zaman program çalışmayı durdurdu şeklinde hata alıyorum.Hatam nerde ve yukarda bahsettiğim hesabı yapmak için nasıl devam etmeliyim?





< Bu mesaj bu kişi tarafından değiştirildi TechNopaT -- 9 Mayıs 2013; 23:50:57 >

M
13 yıl (2607 mesaj)
Binbaşı

Matrisi dantımlı olmayan değerlerle tenımlamaya çalışıyosun
int i,j,n;
int array_matris[ı][j];

burda i ve j nin ilk değeri yok, ayrıca array_matris[ı][j] bırdaki ı, i olacak


Bu mesaja 1 cevap geldi.
T
13 yıl (174 mesaj)
Çavuş
Konu Sahibi

#include<stdio.h>
int main(void)

{
int i,j,n;
int array_matris[n][n];


printf("Kare matrisin boyutunu belirtiniz (2 veya 3):\n");
scanf("%d",&n);


if( n == 2 || n == 3)

for(i=0;i<n;i++){
for(j=0;j<n;j++){


printf( "%d. satir %d sutunun degerini giriniz \n",(i+1),(j+1) );
scanf( "%d", &array_matris[ı][j] );


getchar( );

}
}

else
printf("HATA: Girilen matris boyutu tanimli degildir ! 2 veya 3 boyutlu matris seciniz\n\a");

getchar( );
getchar( );
return 0;

}


Hocam sağolasın ilk dediğin hatayı düzelttim. Parantez içindeki "i" leri mecburen "ı" olarak yazdım yoksa gözükmüyor forumda.

Satırları ve sütunları (kendi aralarında) toplatıp ,büyük olanı yazdırmak için nasıl devam etmem lazım ??


Bu mesaja 1 cevap geldi.
M
13 yıl (547 mesaj)
Yüzbaşı

Bunu google'da, "en büyük sayı bulma algoritması" gibi anahtar kelimelerle ararsanız karşınıza bir sürü sıralama algoritması örneği gelecektir.




Bu mesajda bahsedilenler: @TechNopaT
H
13 yıl (57 mesaj)
Çavuş

quote:

Orijinalden alıntı: TechNopaT

#include<stdio.h>
int main(void)

{
int i,j,n;
int array_matris[n][n];


printf("Kare matrisin boyutunu belirtiniz (2 veya 3):\n");
scanf("%d",&n);


if( n == 2 || n == 3)

for(i=0;i<n;i++){
for(j=0;j<n;j++){


printf( "%d. satir %d sutunun degerini giriniz \n",(i+1),(j+1) );
scanf( "%d", &array_matris[ı][j] );


getchar( );

}
}

else
printf("HATA: Girilen matris boyutu tanimli degildir ! 2 veya 3 boyutlu matris seciniz\n\a");

getchar( );
getchar( );
return 0;

}


Hocam sağolasın ilk dediğin hatayı düzelttim. Parantez içindeki "i" leri mecburen "ı" olarak yazdım yoksa gözükmüyor forumda.

Satırları ve sütunları (kendi aralarında) toplatıp ,büyük olanı yazdırmak için nasıl devam etmem lazım ??


örnek olarak 3 e 3 bir matrisin olduğunu varsayıyorum.

i:Satır Sayısı
j:Sütun Sayısı


toplam = 0;


for i =1:3 ( sen bunu i < 4 ;i++ şeklinde ifade edeblrsn ) ya da parametrik olması için 4 yerine kullanıcının klavyeden girdiği sayınının (N) bir fazlası dersin.

for j=1:3

toplam = toplam + matris[ı][j];

end

x[ı] = toplam;
toplam = 0;
end

kod sırasyla (1,1) (1,2) (1,3) ü toplayıp 3 elemanlı x matrisine 1.indeks olarak atar.
daha sonra (2,1) (2,2) (2,3) toplayıp x2
(3,1)(3,2)(3,3) toplayıp x3 e atar.


daha sonra elindeki 3 elemanı maximum işlemine sokup en büyüğü elde edebilirsin.

bu işlem satırlar için yapılabilir.Sütünlar için de for döngülerinin yerini değiştirirsin.ozmn da (1,1) (2,1) (3,1) e bakar...

format attığım için program yüklü değil pek kod yazıp derleyemiyorum ama bu vb mantı işini görür diye düşünüyorum





< Bu mesaj bu kişi tarafından değiştirildi hayfans89 -- 12 Mayıs 2013; 17:15:02 >
Bu mesaja 1 cevap geldi.
H
13 yıl (57 mesaj)
Çavuş

eclipse kurup yazdım.Java ile yazdım ama sen buradan mantığını çok rahat anlarsın diye düşünüyorum...
max bulma javada hazır fonksiyonlarla yapıldığı için çok basit c de bu var mıydı yok muydu tam hatrlamıyorm ama max bulma ile ilgili arkadaşların dediği gibi algoritmalar google da mevcut.
 
import java.util.Scanner;
public class dnme {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

int i = 3;
int j = 3;
int toplam=0;
int max = 0;
int [] x_dizi = new int[ı];
int [] y_dizi = new int[ı];
int [][] dizi = new int[ı][j];
Scanner input = new Scanner(System.in);

//Diziyi doldurma
for(i=0; i<3 ; i++){
for( j=0 ; j<3 ; j++){

System.out.printf("Dizi[%d][%d] :",i,j);
dizi[ı][j] = input.nextInt();

}
}
//Satir islemi
for (i=0;i<3;i++){
for (j=0;j<3;j++){
toplam = toplam + dizi[ı][j];
}
x_dizi[ı] = toplam;
toplam = 0;
}

max = Math.max(x_dizi[0], x_dizi[1]);
max= Math.max(max, x_dizi[2]);

System.out.println(max);

//Sutun islemi
for (i=0;i<3;i++){
for (j=0;j<3;j++){
toplam = toplam + dizi[j][ı];
}
y_dizi[ı] = toplam;
toplam = 0;
}

max = Math.max(y_dizi[0], y_dizi[1]);
max= Math.max(max, y_dizi[2]);

System.out.println(max);


}

}






< Bu mesaj bu kişi tarafından değiştirildi hayfans89 -- 12 Mayıs 2013; 18:37:19 >

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.