Originariamente inviata da
torn24
Ovviamente è stata una svista, dovrai usare il tipo char anche nella funzione.
Il fatto che dobbiamo salvare i valori 0 e 1, quindi diventa solo uno spreco di memoria usare un int.
Eccolo qui @torn24!! Grazie per avermi passato questo suggerimento !
codice:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
void Pass( char *word,int n){
fflush(stdin);
for(int i=0;i<n;i++){
printf("inserisci lettera n.%d: ",i+1);
fflush(stdin);
scanf("%c",&word[i]);
}
return;
}
void stampa( char *word,int n,char stampato[]){
for(int i=0;i<n;i++){
if(stampato[word[i]]==0){ //Il carattere non'è stato ancora stampato
printf("\nParola [%d]: %c",i+1,word[i]);
stampato[word[i]]=1; //Carattere stamapato già
}
}
return ;
}
int main(int argc, char **argv){
int n;
char stampato[127]={0};//Array contenente lo stato
//l'array è composto da 127 elementi ognuno corrispondente al codice ascii "ristretto".
//Per accedere a un elemento dell'array, useremo il valore ascii del carattere.
//Esempio stampato['A'] equivale a stampato[65]*/
printf("Digita quante parole vuoi inserire: ");
scanf("%d",&n);
char *word=(char*)malloc(n*sizeof(char));
Pass(word,n);
stampa(word,n,stampato);
free(word);
return 0;
}