C Dilinde matris üs alma işlemi

işlem kısmında bir hata yapıyorum nasıl düzeltebilirim?Yardım ederseniz sevenirim.

#include <stdio.h>
#include <conio.h>
int n,i,j,k,x,l;
int main()
{   int dizi[n][n];
    int sonuc[n][n];
    int sonuc1[n][n];
    int msonuc[n][n];
    printf("Kare matrisinizin boyutunu giriniz : ");scanf("%d",&n);
    printf("Kuvvet degerinizi giriniz : ");scanf("%d",&x);
    for(i=0;i<n;i++)
	{	for(j=0;j<n;j++)
        { printf("[%d][%d] = ",i+1,j+1);scanf("%d",&dizi[i][j]); }
	}
    printf("SONUC\n");
    printf("-----\n");
   	for(i=0; i<n; i++)
		{	for(j=0; j<n; j++)
			{	for(k=0; k<n; k++)
				{	
					sonuc[i][j]=dizi[i][k]*dizi[k][i];
			   		msonuc[i][j]+=sonuc[i][j];			  
				}	
				printf("%d ",msonuc[i][j]);
			}
			printf("\n");	
		}	
	getch();
    return 0;
}

+=? Neyin uzerine ekliyoruz?

msonuc'u initialize etmen lazim.

Hatanin ne oldugunu soylememissin tabi. Diger hatalarin cozumu:

  • int main(void).
  • int'lerin cogunun global olmasina gerek yok. i/j/k for bloklarina lokal bile olabilir.
  • scanf'lerin dondurdukleri deger kontrol edilmiyor.
  • conio/getch standart degil.
  • Islemler fonksiyonlara alinabilir.
3 Beğeni

Selamun Aleyküm, bana da faydası olur diye uğraştım. Java dilinde yazmaya çalıştım. C ile benzer bir Syntax’ı var. Elbetteki C daha zordur. Belki işine yarar biraz incele istersen. İyi çalışmalar…

import java.util.Scanner; // C'deki #include <ktphn.h> deyimi ile benzer işleve sahip

public class MatrisUsAlma { 
    static int[][] matris;
    
    public static int[][] usAl(int[][] mtrs, int x){ 
    /* main methodu içerisinden çağırdım, main aşağıda
       üs alma işlemini yapan yer burası */
        int toplam=0, carpim=1, n=matris.length;
        int[][] snc = new int[n][n];
        
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                for(int k=0, m=j; k<n; k++){
                    carpim = matris[i][k] * mtrs[k][m];
                    toplam += carpim;
                    if (k==n) m++;
                }
                snc[i][j] = toplam;
                toplam = 0;
            }
        }
        
        if(x>2) snc = usAl(snc, x-1); // tekrar kendisini çağırıyoruz
        return snc;
    }
    
    public static void main(String[] args) { // C'deki main methodu burada da var.
        
        Scanner scn = new Scanner(System.in); 
        // C'deki scanf fonksiyonunun görevini yapacak
        
        System.out.print("Matris boyutu: "); int n = scn.nextInt(); 
        System.out.print("Kuvvet değeri: "); int x = scn.nextInt();

        matris = new int[n][n];
        int[][] sonuc;
                        
        // matrisin içini dolduruyoruz
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                System.out.print("("+i+", "+j+"): ");  // (satir, sutun):
                matris[i][j] = scn.nextInt();
            }
            System.out.println("------------------");
        }
        
        System.out.println("SONUÇ");
        System.out.println("---------");
        
        // yukarıda asıl işlemi yapan methodu çağırıyoruz
        sonuc = usAl(matris, x);
        
        // sonucu ekrana yazdır
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                System.out.print(sonuc[i][j] + "\t");
            }
            System.out.println("");
        }
    }
}

1 Beğeni