Esercizio funzioni

di il
9 risposte

Esercizio funzioni

Devo scrivere un programma che stampa una matrice 9x9 che abbia questo aspetto

2 3 4 5 6 7 8 9 10
3 4 5 6 7 8 9 10 11
4 5 6 7 8 9 10 11 12
........................
....................
.......................
........................
.........................
10 11 12 13 14 15 16 17 18

Al posto dei puntini ci sono i numeri restanti.
Il codice che ho scritto è il seguente, mi potreste far capire che errori ho commesso ? Il programma non parte e mi segnalo tutta una serie di errori che non riesco a individuare. Grazie
#include<stdio.h>
#include<stdlib.h>
#define N_MAX 9
void riempi_Matrice(int a[][N_MAX]);
void stampa_Matrice(int a[][N_MAX]);
int main ()
{
	int a[N_MAX][N_MAX];
	riempi_Matrice(a);
	stampa_Matrice(a);
	getchar();
	exit(0);
}
void riempi_Matrice(int a[][N_MAX])
{
int i, j;
for(i=0;i<9;i++)
{
	for(j=0;j<9;j++)
	{
	int a[i][j] = i+j;
    }
}
void stampa_Matrice(int a[][N_MAX])
	for(i=0;i<9;i++)
{
	for(j=0;j<9;j++)
}
	int a[i][j] = i+j;
    
printf("%d", int a[i][j]);

}

9 Risposte

  • Re: Esercizio funzioni

    Ci sono parecchi errori di parentesi ed alcune errate dichiarazioni.
    Rivedilo bene.
  • Re: Esercizio funzioni

    Eduadie ha scritto:


    Ci sono parecchi errori di parentesi ed alcune errate dichiarazioni.
    Rivedilo bene.
    Ho ridato un occhiata al codice e penso di aver trovato alcuni errori riguardo le parentesi. Non riesco però a trovare quelli riguardanti le dichiarazioni. "Cosa" dovrei cercare ?
    
    #include<stdio.h>
    #include<stdlib.h>
    #define N_MAX 9
    void riempi_Matrice(int a[][N_MAX]);
    void stampa_Matrice(int a[][N_MAX]);
    int main ()
    {
    	int a[N_MAX][N_MAX];
    	riempi_Matrice(a);
    	stampa_Matrice(a);
    	getchar();
    	exit(0);
    }
    void riempi_Matrice(int a[][N_MAX])
    {
    int i, j;
    
    for(i=0;i<9;i++)
    {
    	for(j=0;j<9;j++)
    	{
    	int a[i][j] = i+j;
        }
    }
    }
    void stampa_Matrice(int a[][N_MAX])
    {
    for(i=0;i<9;i++)
    {
    	for(j=0;j<9;j++)
        {
    	 int a[i][j] = i+j;
        }
    }
    printf("%d", int a[i][j]);
    
    }
  • Re: Esercizio funzioni

    int a[i][j] = i+j;
    E' sbagliato, inoltre in stampa matrice devi dichiarare i e j.
  • Re: Esercizio funzioni

    Eduadie ha scritto:


    int a[i][j] = i+j;
    E' sbagliato, inoltre in stampa matrice devi dichiarare i e j.
    Ok, ho corretto ma adesso mi da un errore che non avevo mai letto in precedenza.
    "cannot open output file......Permission denied."
    Al posto dei puntini c'è l'indirizzo di dove ho salvato il file .c
    Inoltre dopo aver corretto gli errori che mi hai fatto notare il programma si è avviato una volta mostrandomi a schermo solo il numero 32 .
    Dopo aver ripremuto nuovamente il pulsante compilazione non si è avviato più dandomi il messaggio che ho scritto qualche riga sopra .
    #include<stdio.h>
    #include<stdlib.h>
    #define N_MAX 9
    void riempi_Matrice(int a[][N_MAX]);
    void stampa_Matrice(int a[][N_MAX]);
    int main ()
    {
    	int a[N_MAX][N_MAX];
    	riempi_Matrice(a);
    	stampa_Matrice(a);
    	getchar();
    	exit(0);
    }
    void riempi_Matrice(int a[][N_MAX])
    {
    int i, j;
    
    for(i=0;i<9;i++)
    {
    	for(j=0;j<9;j++)
    	{
    	a[i][j] = i+j;
        }
    }
    }
    void stampa_Matrice(int a[][N_MAX])
    {
    	int i, j;
    for(i=0;i<9;i++)
    {
    	for(j=0;j<9;j++)
        {
    	 a[i][j] = i+j;
        }
    }
    printf("%d", a[i][j]);
    
    }
  • Re: Esercizio funzioni

    Una cosa non mi è chiaro perchè hai fatto due funzioni se riempi_matrice è uguale a stampa_matrice?
    Per come lo hai fatto tu la riempi due volte...è il procedimento che è sbagliato...
  • Re: Esercizio funzioni

    Eduadie ha scritto:


    Una cosa non mi è chiaro perchè hai fatto due funzioni se riempi_matrice è uguale a stampa_matrice?
    Per come lo hai fatto tu la riempi due volte...è il procedimento che è sbagliato...
    Non ho scelto io di fare due funzioni ma l'esercizio mi chiede proprio di scrivere la definizione di queste due funzioni. In ogni caso nel corso si è sottolineato di dividere sempre la parte in cui si fanno i calcoli con il resto.
  • Re: Esercizio funzioni

    Si ma ciò non toglie che sono due funzioni identiche che fanno la stessa cosa. In mostra_matrice non ci dovrebbe essere la parte dei due cicli for che inseriscono valori nella matrice, ma solo mostrarli.
  • Re: Esercizio funzioni

    Per essere più chiari possibile ...

    Nella funzione

    riempi_Matrice

    ci deve stare solo il codice di input

    Nella funzione

    stampa_Matrice

    solo il codice che visualizza
  • Re: Esercizio funzioni

    Cavolo hai ragione, ho corretto la seconda matrice e adesso funziona. Grazie per l'aiuto.
    #include<stdio.h>
    #include<stdlib.h>
    #define N_MAX 9
    void riempi_Matrice(int a[][N_MAX]);
    void stampa_Matrice(int a[][N_MAX]);
    int main ()
    {
    	int a[N_MAX][N_MAX];
    	riempi_Matrice(a);
    	stampa_Matrice(a);
    	getchar();
    	exit(0);
    }
    void riempi_Matrice(int a[][N_MAX])
    {
    int i, j;
    
    for(i=0;i<9;i++)
    {
    	for(j=0;j<9;j++)
    	{
    	a[i][j] = (i+1)+(j+1);
        }
    }
    }
    void stampa_Matrice(int a[][N_MAX])
    {
    int i, j;
    
    for(i=0;i<9;i++)
    {
    	for(j=0;j<9;j++)
    	{
    	printf("%3d", a[i][j]);
        }
        printf("\n");
    }
    }
Devi accedere o registrarti per scrivere nel forum
9 risposte