Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Programma matrici e vettori in C

    Data una matrice e un vettore in ingresso restituisca un vettore (dimensione massimauguale a quella del vettore in ingresso) di struct indici {int i; int j} di tutti gli indici dellamatrice dove sono presenti multipli degli elementi del vettore. In pratica inseriti i valori della matrice, e del vettore, mi deve dare in uscita un vettore che mi dia la posizione dei multipli dei valori nel vettore iniziale, all'interno della matrice. Per esempio ho una matrice 2x2 con elementi 4, 5 e 3, 9 e un vettore con 2,3. Il vettore finale dovrebbe darmi la posizione (1,1) e (2,2) perchè 4 e 9 sono multipli di 2 e 3. Ho cercato di farlo, non mi da errori di compilazione ma il vettore finale non risulta. Spero possiate aiutarmi. Il codice è questo:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    
    
    typedef struct {
    	int i;
    	int j;
    } 	indice;
    
    
    void risultato(int **matrice, int righe, int colonne, int *vettore, int dim_vett, indice *vettfin)
    {
    int i,j, x, y=0;
    for (x=0; x<dim_vett; x++)
    for (i=0; i<righe; i++)
    for (j=0; j<colonne; j++)
    if(vettore[x]%matrice[i][j]==0)
    { vettfin[y].i=i+1;
      vettfin[y].i=j+1;
      y++;
    }
    printf ("Il vettore di indici e' \n");
    for (x=0;x<y;x++)
    printf ("%d, ", vettfin[x].i);
    printf ("%d \n", vettfin[x].j);
    }
    int main(void) 
    {
       	int n, m, i, j, x, **matrice, *vettore;
       	indice *vettfin;
       	printf ("Inserisci dimensione della matrice \n");
       	printf ("Inserisci numero righe: ");
       	scanf ("%d", &n);
       	printf ("Inserisci numero colonne: ");
       	scanf ("%d", &m);
       	matrice=(int **)malloc(sizeof(int *)*n);
       	for(i=0;i<n;i++)
       	matrice[i]=(int *)malloc(sizeof(int)*m);
       	for(i=0; i<n;i++)
       	for(j=0;j<m;j++)
       	{
       		printf ("Inserisci valore (%d,%d): ", i+1, j+1);
       		scanf ("%d", &matrice[i][j]);
    	}
    	printf ("Inserisci dimensione del vettore: ");
    	scanf ("%d", &x);
    	vettore= (int *)malloc(sizeof(int)*x);
    	for(i=0;i<x;i++)
    {
    	printf ("Inserisci valore %d/%d: ", i+1, x);
    	scanf ("%d", &vettore[i]);
    }
    	vettfin= (indice *)malloc(sizeof(int)*2*(n*m));
    	risultato(matrice, n, m, vettore, x, vettfin);
    
    
    	return 0;
    }
    Ultima modifica di luigi93ct; 01-06-2015 a 19:05

  2. #2
    il tuo compilatore non segnala una cosa simile ?
    "Suspicious pointer conversion in function main"

    su questa riga di codice

    codice:
    risultato= (int*)malloc(sizeof(int)*2*(n*m));
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Attenzione in questa riga

    vettfin[y].i=j+1;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    si infatti ho cambiato risultato= (indice *)malloc(sizeof(int)*2*(n*m)); non so se è giusto ma non da piu l'errore

  5. #5
    cosa devo mettere?

  6. #6
    a cosa servono quei +1 ?
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quote Originariamente inviata da luigi93ct Visualizza il messaggio
    cosa devo mettere?
    Perché metti in .i il valore di j+1 ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    ho messo j+1 e i+1 per memorizzare la posizione nello struct, e per partire dal valore (1,1) altrimenti partirebbe da (0,0)
    infatti una matrice parte da a11, a12,............., a1n

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quote Originariamente inviata da luigi93ct Visualizza il messaggio
    ho messo j+1 e i+1 per memorizzare la posizione nello struct, e per partire dal valore (1,1) altrimenti partirebbe da (0,0)
    infatti una matrice parte da a11, a12,............., a1n

    Una matrice comincia da 0,0 e non hai letto con attenzione la linea che ti ho evidenziato. Assegni j a i nella struttura..
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    ok l'ho corretto ma mi risulta lo stesso sbagliato il vettore finale

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 © 2024 vBulletin Solutions, Inc. All rights reserved.