Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    113

    [C] Calcolare elementi consecutivi in una matrice

    Ciao a tutti
    sto facendo un programmino nel quale vi è una matrice costituita di elementi solo pari a 1 o 0.
    Dopo aver inserito gli elementi nella matrice ( con gli opportuni controlli sulla dimensione della matrice e sugli elementi ) devo trovare la riga che contiene il più gran numero di elementi consecutivi con valore uguale ad 1 ed il valore attuale di tale numero.

    io ho fatto in questo modo
    codice:
    
    #include <stdio.h>
    #define N 100
    #define M 100
    
    int main()
    {
        int matrix[N][M];
        int n, m, i, j, k, z;
        int num, max;
        int v[M];
    
        printf("Inserisci il numero di righe ed il numero di colonne della matrice : \n");
        scanf("%d %d", &n, &m);
        if ( n <= N && m <= M ) {
            printf("Inserisci gli elementi della matrice %d x %d\n", n, m);
            for ( i = 0; i < n; i++ ) {
                for ( j = 0; j < m; j++ ) {
                    printf("Inserisci l'elemento [%d][%d] : \n", i, j);
                    scanf("%d", &num);
                    if ( num == 0 || num == 1) {
                        matrix[i][j] = num;
                    } else {
                        printf("Elemento inserito errato \n");
                        break;
                    }
    
                }
            }
        }
    
        printf("\nLa matrice è : \n");
        for ( i = 0; i < n; i++ ) {
            for ( j = 0; j < m; j++ ) {
                printf("%d\t", matrix[i][j]);
            }
            printf("\n");
        }
    
        k = 0;
        for ( i = 0; i < n; i++ ) {
            max = 0;
            for ( j = 0; j < m; j++) {
                if ( (matrix[i][j + 1] - matrix[i][j]) == 0 ) {
                    max += 1;
                } else {
                    v[k] = max + 1;
                    k++;
                    }
                    max = 0;
                }
            }
    
        for ( k = 0; k < m; k++ ) {
            printf("%d\t", v[k]);
        }
       return 0;
    }
    cercando i numeri di 1 consecutivi in ciascuna riga e memorizzando il loro valore ogni volta in un vettore..ma a quanto pare non è proprio la via giusta..avete suggerimenti ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371
    scusami ma
    codice:
    (matrix[i][j + 1] - matrix[i][j]) == 0
    restituisce true sia se ci sono due valori 1 consecutivi, sia se ci sono due valori 0 consecutivi... tu devi verificare soltanto gli uno, giusto?

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.