Problema visualizzazione in c

di il
4 risposte

Problema visualizzazione in c

Salve ragazzi ho un piccolo problema con questo codice c: in pratica queato algoritmo visualizza le cellule in cui all'inizio nella prima riga
c'è solo una cellula nera, poi proseguendo al passo due alla seconda riga ci sono 2 cellule nere ecc. Devo visualizzare al passo 4,8,16,31,64 e 80
solo che al momento della visualizzazione mi fa vedere solo il passo 80 ( anche se esegue perfettamente tutto)

Ecco il codice:
#include <stdio.h>

#define N 80
#define BIANCO ' '
#define NERO 'N'

void algoritmo(char*, int);
void stampa(char*, int);

int main(){
int i,j;
char cellule[N][N];

for(i=0;i<N;i++)
for(j=0;j<N;j++)
cellule[j] = BIANCO;

cellule[0][N/2] = NERO;

algoritmo(&cellule[0][0],N);

printf("Digita un carattere e INVIO per uscire");
scanf("%d", &i);
return 0;
}


void algoritmo(char* c, int n){

int i,k;
char j, jmeno1, jpiu1;

//Tutte e 4 le regole coinvolgono un j-1 e j+1, per cui per le cellule ai bordi queste regole non potranno mai essere verificate. ( 0<j<n-1 )

for(i=1;i<n;i++){
for(k=1;k<n-1;k++){

j = *(c+(i-1)*n + k);
jmeno1 = *(c+(i-1)*n + (k-1) );
jpiu1 = *(c+(i-1)*n + (k+1) );

if(
/* a. nella riga (i-1)-sima la cellula j e la cellula j-1 sono nere e la cellula j+1 è bianca; */
(j==NERO && jmeno1==NERO && jpiu1==BIANCO) ||
/* b. nella riga (i-1)-sima la cellula j-1 è nera e le cellule j e j+1 sono bianche; */
(jmeno1==NERO && j==BIANCO && jpiu1 == BIANCO) ||
/* c. nella riga (i-1)-sima la cellula j e la cellula j+1 sono nere e la cellula j-1 è bianca; */
(jmeno1==BIANCO && j== NERO && jpiu1 == NERO) ||
/* d. nella riga (i-1)-sima la cellula j+1 è nera e le cellule j e j-1 sono bianche */
(j==BIANCO && jmeno1==BIANCO && jpiu1 == NERO)
){
*(c+i*n+k) = NERO;
}
}

if(i==3 || i==7 || i==15 || i==31 || i==63 || i==79){
printf("Passo %d\n",i+1);
stampa(c,n);
}
}

}


void stampa(char* c, int n)
{
int i,j;

for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%c", *(c+i*n+j));
}
printf("\n");
}
}

4 Risposte

  • Re: Problema visualizzazione in c

    Problema 1: non usi i tag CODE
    Problema 2: non usi un debugger e non vedi le altre stampe
  • Re: Problema visualizzazione in c

    Se non inserisci dopo la stampa l'input di un tasto da tastiera, non hai il tempo di vedere le parti intermedie perché l'elaborazione è veloce
  • Re: Problema visualizzazione in c

    oregon ha scritto:


    Se non inserisci dopo la stampa l'input di un tasto da tastiera, non hai il tempo di vedere le parti intermedie perché l'elaborazione è veloce
    Quindi dovrei mettere una scanf in ogni function?
  • Re: Problema visualizzazione in c

    Ti ho detto questo? Solo dopo aver chiamato la funzione stampa
Devi accedere o registrarti per scrivere nel forum
4 risposte