Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    10

    [fortran]

    Salve a tutti! ho un problema...
    Devo risolvere quest algoritmo
    Avendo una matrice A, calcolare la media degli elementi della diagonale e verificare per ogni colonna se la somma degli elementi è uguale alla media!
    Io l'ho provato a risolvere in questo modo, ma nn funziona!

    codice:
    integer function colonna(n,a) 
    integer::n 
    integer,dimension(100,100)::a 
    integer::somma,i,media,j 
    
    somma=0 
    do i=1,n 
        somma=somma+a(i,i) 
    end do 
    media=somma/n 
    j=1 
    colonna=0 
    do i=1,n 
        somma=somma+a(i,j) 
        do 
           if (somma/=media.or.j==n)exit 
              colonna=1 
       end do 
    somma=0 
    j=j+1 
    end do 
    return  
    end function
    Grazie mille!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Se non hai già risolto, prova a postare codice compilabile con tanto di programma chiamante.
    every day above ground is a good one

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    10

    Programma chiamante

    codice:
     program es1
    integer, dimension(100,100)::A
    
    integer::n
    integer::i,j
    integer::colonna1, colonna
    
    Write(*,*)"Inserisci l'ordine della matrice quadrata, n"
    Read(*,*) n
    Write(*,*)"Inserisci la matrice"
    do i=1,n
    Read(*,*)(a(i,j),j=1,n)
    end do
    do i=1,n
    write(*,*)(a(i,j),j=1,n)
    end do
    
    colonna1=colonna(n,a)
    write(*,*) colonna1
    
    
    stop
    end program

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Riscrivendo così la funzione

    codice:
    integer function colonna(n,a) 
    	integer::n 
    	integer, dimension(100,100)::a 
    	integer::somma, i, media, j 
    
    	somma = 0
    
    	do i = 1, n
        		somma = somma + a(i, i)
    	end do
    
    	somma = 0
    	colonna = 0
    
    	do j = 1, n 
    		do i = 1, n 
    			somma = somma + a(i, j)
    		end do
    
    		if (somma .EQ. media) then
    			Write (*,*) "colonna:", j
    		end if
    
    		somma = 0 
    	end do
    
    	return
    end function
    otterresti la stampa di tutti gli indici di colonna che soddisfano la condizione che hai detto. Come comunicarli al programma chiamante però è da rivedere: volendo potresti fare un ciclo iterativo e richiamare la funzione j volte (con j numero di colonne) e per ogni colonna verificare la condizione. La media potresti calcolarla con una funzione a parte...
    every day above ground is a good one

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    10

    Nuovo codice

    Posto un nuovo codice che però mi da sempre 0, anche quando la somma degli elementi di ogni colonna è uguale alla media degli elementi della diagonale!
    codice:
    integer function prova2(n,a)
    real,dimension(100,100)::a
    integer::n
    integer::i,j,somma
    real::m
    
    do i=1,n
    somma=somma+a(i,i)
    end do
    m=somma/n
    
    prova2=1
    i=1
    do
    somma=0
    do j=1,n
    somma=somma+a(i,j)
    end do
    if (somma/=m)then
       prova2=0
    End if
    i=i+1
    if (i==n.or.prova2==0)exit
    end do
    return
    end function

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.