Indice del forum
 FAQ   Cerca   Lista utenti   Gruppi   Registrati   Profilo   Messaggi privati   Log in 
Programma in c..qualcuno sa aiutarmi?

 
Nuovo argomento   Rispondi    Indice del forum -> Programmazione: c#, c++, Java, HTML, PHP, Javascript...
Precedente :: Successivo  

Autore

Messaggio

ale23
Novizio


Registrato: 21/09/09 14:34
Messaggi: 1

MessaggioInviato: Lun Set 21, 2009 2:48 pm    Oggetto: Programma in c..qualcuno sa aiutarmi?

Rispondi citando


ho fatto questo programma in c ma non funziona e non so come fare..
il testo dell'esercizio si trova qui
http://www.zshare.net/image/65907151a13c2e27/
(mi riferisco agli esercizi 2 e 3)
il problema dovrebbe essere nell'int main..
comunque quando eseguo il programma esce la scritta segmentation fault

grazie mille

#include<stdio.h>
#include <string.h>

char Funzione (char numero[11] ,char m[5][80]);
int ConvertiNumero (char numero [1], int i);


int main ( char valore [10])
{
char cifra [5][80];

printf("inserisci il valore \n");
scanf("%s", valore);
Funzione (valore, cifra);
printf("%s", Funzione);

}


char Funzione (char numero[11] ,char m[5][80])
{
int i,j, q=0, n;
char num[1], mat[5][8];
char nome[10]="file.txt";


FILE*fp;

for(i=0; numero[i]<strlen(numero); i++)
{

n=ConvertiNumero (numero, i);


nome[strlen(nome)-5]='n';
fp=fopen(nome,"r");
for(i=0;i<5;i++)
for(j=0;j<8;j++)
fscanf(fp,"%c", &mat[i][j]);
m[5][q]=mat[i][j];
}
fclose(fp);
return m[5][q];
q+=5;
}


int ConvertiNumero (char num[1], int i)
{
if (num[i]=='0')
return 0;
else if (num[i]=='1')
return 1;
else if (num[i]=='2')
return 2;
else if (num[i]=='3')
return 3;
else if (num[i]=='4')
return 4;
else if (num[i]=='5')
return 5;
else if (num[i]=='6')
return 6;
else if (num[i]=='7')
return 7;
else if (num[i]=='8')
return 8;
else if (num[i]=='9')
return 9;
}

Top

Profilo Invia messaggio privato

cali1981
Site Admin


Registrato: 16/01/06 22:01
Messaggi: 836

MessaggioInviato: Mar Set 22, 2009 1:40 pm    Oggetto:

Rispondi citando


Allora, intanto queste due righe non vanno:


Funzione (valore, cifra);
printf("%s", Funzione);

Dovrebbe essere qualcosa del tipo:

char c;


c = Funzione (valore, cifra);
printf("%s", c);

Ma immagino anche che Funzione debba restituire un char* o char[] e non semplicemente char.

Poi
int ConvertiNumero (char numero [1], int i);

dovrebbe essere

int ConvertiNumero (char numero, int i);

o meglio


int ConvertiNumero (char numero);


int ConvertiNumero (char num)
{
if (num=='0')
....

}


nome[strlen(nome)-5]='n';

mette il carattere n nella stringa, e non il valore di n. Devi usare invece la funzione itoa.

qui


return m[5][q];
q+=5;

Dopo il return non ci va niente, tanto è un pezzo di codice che non viene eseguito.
_________________
Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!

Realizzazione siti web e applicazioni ASp.NEt, C/C++, C#

Top

Profilo Invia messaggio privato Invia e-mail

ixamit
Novizio


Registrato: 27/09/09 11:23
Messaggi: 4

MessaggioInviato: Dom Set 27, 2009 11:25 am    Oggetto:

Rispondi citando


Codice:

#include <stdio.h>
#include <string.h>

#define MAX_CHARS 10
#define SIZE_Y 5
#define SIZE_X 8

int display (char *argv,char m[MAX_CHARS][SIZE_Y][SIZE_X])
{
   int y,x,k;

   for (y=0;y<SIZE_Y;y++)
   {
      for (k=0;k<strlen(argv);k++)
      {
         for (x=0;x<SIZE_X;x++)
            printf ("%c",m[argv[k]-48][y][x]);
      }
      printf ("\n");
   }
   return (0);
}

int matrix_load (char m[MAX_CHARS][SIZE_Y][SIZE_X])
{
   FILE *fp;
   char filename[16];
   char buff[16];
   int x,y;
   
   for (x=0;x<MAX_CHARS;x++)
   {
      sprintf (filename,"%d.txt",x);
      fp=fopen (filename,"r");
      if (!fp)
      {
         printf ("Warning: file %s not found\n",filename);
         memset (m[x],' ',SIZE_Y*SIZE_X);
         //
         // Break all loading
         //return 1;
      }
      else
      {
         for (y=0;y<SIZE_Y;y++)
            if (fgets(buff, sizeof(buff)-1, fp)!=NULL)
               strncpy (m[x][y],buff,SIZE_X);
         fclose (fp);
      }
   }
   return (0);
}

int main (int argc,char **argv)
{
   char m[MAX_CHARS][SIZE_Y][SIZE_X];
   int err=0;

      
   if (argc==1)
   {
      printf ("Usage:\n\t%s 709421\n\n",argv[0]);
      return (1);
   }

   if ((err=matrix_load (m))==0)
   {
      display (argv[1],m);
   }

   return (err);
}

Top

Profilo Invia messaggio privato HomePage

Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione: c#, c++, Java, HTML, PHP, Javascript... Tutti i fusi orari sono GMT
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi
Forum del sito TuttoMontefalco.it - Umbria - Italy topic RSS feed 


Torna al sito TuttoMontefalco.it


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it

SoftGreen 1.1 phpBB theme by DaTutorials.com
Copyright © DaTutorials 2005