Problema con algoritmo numeri consecutivi

di il
10 risposte

Problema con algoritmo numeri consecutivi

Salve avevo questo esercizio da svolgere:
Data una matrice di n righe ed m colonne, di numeri interi minori di 10.

Individuare e stampare le colonne della matrice che contengono tre elementi consecutivi che

abbiano valori successivi.

La soluzione che ho rilevato è la seguente:
 
#include <stdio.h>
#include <stdlib.h>

#define RIGHE 4
#define COLONNE 5


int main(void) {

	int matrice[RIGHE][COLONNE];
	int i, k;
	i = 0;
	int numero_caricato;

	while (i < RIGHE)
	{
		k = 0;
		while (k < COLONNE)
		{
			printf("inserisci il %d, %d valore della matrice: \n", i, k);
			scanf("%d", &numero_caricato);
			if (numero_caricato < 10)
			{
				matrice[i][k] = numero_caricato;
				k++;
			}else printf("Inserisci di nuovo il valore \n");
		}
		i++;

	}


	i=0;
	while (i<RIGHE)
	{
		k=0;
		while(k<COLONNE)
		{
			if(matrice[k][i]+1 == matrice[k+1][i] && matrice[k][i]+2 == matrice[k+2][i])
			{
				printf("%d-%d-%d\n", matrice[k][i], matrice[k+1][i], matrice[k+2][i]);
			}

			k++;
		}
		i++;
	}

system("pause");
return 0;

}


L'algoritmo funziona ma non mi conta l'ultima colonna
esempio:

3 5 6 7 9
1 3 1 7 5
3 5 2 8 6
1 5 3 9 7

Mandato in esecuzione mi rileva la sequenza: 1 2 3 e la sequenza 7 8 9 ma non 5 6 7
Potete darmi qualche consiglio?

10 Risposte

  • Re: Problema con algoritmo numeri consecutivi

    if(matrice[k][i]+1 == matrice[k+1][i] && matrice[k][i]+2 == matrice[k+2][i])
             {
                printf("%d-%d-%d\n", matrice[k][i], matrice[k+1][i], matrice[k+2][i]);
    occhio che quando cicli va out of range
  • Re: Problema con algoritmo numeri consecutivi

    Potresti spiegarti meglio...
    Io avviandolo il programma funziona ma non capisco perchè non rileva l'ultima colonna
  • Re: Problema con algoritmo numeri consecutivi

    Non ho provato a compilare il codice quindi vado ad occhio, quando cicli con k=4 hai k+1 e k+2 e sei fuori dai limiti della matrice che hai dichiarato
    k<5
  • Re: Problema con algoritmo numeri consecutivi

    Quindi come potrei risolvere a parer tuo?
  • Re: Problema con algoritmo numeri consecutivi

    Ho fatto, grazie mille!
  • Re: Problema con algoritmo numeri consecutivi

    Posta la soluzione putrebbe essere utile anche per gli altri che consultano il forum
  • Re: Problema con algoritmo numeri consecutivi

    Soluzione:
    (Controllate se corretta)
    
     
    #include <stdio.h>
    #include <stdlib.h>
    
    #define RIGHE 4
    #define COLONNE 5
    
    
    int main(void) {
    
       int matrice[RIGHE][COLONNE];
       int i, k;
       i = 0;
       int numero_caricato;
    
       while (i < RIGHE)
       {
          k = 0;
          while (k < COLONNE)
          {
             printf("inserisci il %d, %d valore della matrice: \n", i, k);
             scanf("%d", &numero_caricato);
             if (numero_caricato < 10)
             {
                matrice[i][k] = numero_caricato;
                k++;
             }else printf("Inserisci di nuovo il valore \n");
          }
          i++;
    
       }
    
    
       i=0;
       while (i<=RIGHE)
       {
          k=0;
          while(k<=COLONNE)
          {
             if(matrice[k][i]+1 == matrice[k+1][i] && matrice[k][i]+2 == matrice[k+2][i])
             {
                printf("%d-%d-%d\n", matrice[k][i], matrice[k+1][i], matrice[k+2][i]);
             }
    
             k++;
          }
          i++;
       }
    
    system("pause");
    return 0;
    
    
    }
  • Re: Problema con algoritmo numeri consecutivi

    Cosi facendo il programma ti funziona ma non mi sembra corretto. Se ha un array bidimensionale nel tuo caso matrice[4][5] non puoi andare a sforare questi valori, il tuo k arriva a 7
  • Re: Problema con algoritmo numeri consecutivi

    Infatti...cmq questa traccia sembra uguale a quella che ha proposto il mio professore...curiosità, cosa studi e dove ?

    io farei cosi
    for(i=0;i<righe;i++)
                {
                for(j=0;j<colonne;j++)
                    {
                    if(mat[i][j]==mat[i+1][j]-1 && mat[i+1][j]==mat[i+2][j]-1) // esempio = 4 è uguale a 5-1 ? e 5 è uguale a 6 -1 ? 
                        {
                        printf("Ci sono tre elementi consevutivi in consecutivi in colonna %d\n\n\n",j+1);
                        }
                    }
                }
    
  • Re: Problema con algoritmo numeri consecutivi

    Studio Informatica a Bari, tu?
Devi accedere o registrarti per scrivere nel forum
10 risposte