Funzione che individua riga di una matrice

di il
3 risposte

Funzione che individua riga di una matrice

Ciao ragazzi, sono nuovo del linguaggio. Qualcuno potrebbe gentilmente spiegarmi cosa sbaglio in questo esercizio. vi ringrazio
/*progettare ed implementare un software nel linguaggio di programmazione c il quale 
prende in input una matrice di n righe e m colonne di numeri interi positivi ed un vettore
di numeri interi e positivi di lunghezza m.
il software contiene una funzione che verifica se il vettore e' contenuto in una riga della matrice
scrivere il programma ponendo n=10 ed m=4*/

#include <stdio.h>
#include <stdlib.h>



main()
{
int n=10,m=4,mat[n][m],vet[m];
int i,j;
int controllo;

for(i=0;i<n;i++)
	for(j=0;j<m;j++){
	printf("inserire il valore %d.%d della matrice",i+1,j+1);
	scanf("%d",&mat[i][j]);
	if(mat[i][j]<=0){
	printf("il numero deve essere intero positivo");
	return -1;
	}
	}
for(i=0;i<m;i++){
	printf("inserisci i valori contenuti nel vettore");
	scanf("%d",&vet[m]);
	if(mat[i][j]<=0){
	printf("il numero deve essere intero positivo");
	return -1;
	}
	}
controllo=-1;
controllo=ver_vet(n,m,mat,vet);
if(controllo==1)
	printf("la matrice contiene righe uguali al vettore");
else
	printf("la matrice non contiene righe uguali al vettore");
	return 0;
	system("PAUSE");
}

int ver_vet(int righe,int colonne,int mat[righe][colonne],int vet[colonne])
{
int i,j,contatore=0;

for(i=0;i<righe;i++)
	for(j=0;j<colonne;j++){
	if(vet[j]==mat[i][j]){
	contatore++;}
	else
	contatore=0;
	}
	if(contatore==righe)
	return 1;
	else
	return 0;
}

3 Risposte

  • Re: Funzione che individua riga di una matrice

    Cosa sbagli? Impiega qualche parola a spiegare che succede ...
  • Re: Funzione che individua riga di una matrice

    Devi dichiarare la funzione all'inizio, prima del main, intanto
  • Re: Funzione che individua riga di una matrice

    Scusate la mia breve descrizione. il problema di questo primo codice stava nel fatto che in uscita non avevo il risultato voluto. Adesso ho apportato qualche modifica, ma con questo nuovo codice riesco a determinare se nella matrice ci sono i numeri del vettore. ancora non riesco a capire come "bloccare" questo controllo solo alla n riga della matrice
    #include <stdio.h>
    #include <stdlib.h>
    
    int ver_vet(int righe,int colonne,int mat[righe][colonne],int vet[colonne]);
    
    main()
    {
    int n=2,m=2,mat[n][m],vet[m];
    int i,j;
    int controllo;
    
    for(i=0;i<n;i++)
    	for(j=0;j<m;j++){
    	printf("inserire il valore %d.%d della matrice",i+1,j+1);
    	scanf("%d",&mat[i][j]);
    	if(mat[i][j]<=0){
    	printf("il numero deve essere intero positivo");
    	return -1;
    	}
    	}
    for(i=0;i<m;i++){
    	printf("inserisci i valori contenuti nel vettore");
    	scanf("%d",&vet[i]);
    	if(mat[i][j]<=0){
    	printf("il numero deve essere intero positivo");
    	return -1;
    	}
    	}
    controllo=-1;
    controllo=ver_vet(n,m,mat,vet);
    if(controllo==1)
    	printf("la matrice contiene righe uguali al vettore");
    else
    	printf("la matrice non contiene righe uguali al vettore");
    	return 0;
    	system("PAUSE");
    }
    
    int ver_vet(int righe,int colonne,int mat[righe][colonne],int vet[colonne])
    {
    int i,j,contatore=0;
    
    for(i=0;i<righe;i++){
    	contatore=0;
    	for(j=0;j<colonne;j++){
    	if(vet[j]==mat[i][j]){
    	contatore++;
    	if(contatore==righe)
    		i=righe;
    		return 1;
    	}
    	}
    	}
    	if(contatore!=righe)
    	return 0;
    	printf("%d",contatore);
    }
Devi accedere o registrarti per scrivere nel forum
3 risposte