Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Problemi Con C

    Ciao ragazzi,
    volevo chiedervi un aiuto con C...premetto che sto iniziando adesso a studiare il linguaggio C e, dato che ho Windows XP, ho installato Dev C++.
    Quando però compilo un file mi dà tanti errori e non posso mandarlo in esecuzione.
    Vi spiego passo passo cosa faccio io, così vedo dove sbaglio.
    Allora innanzittuto eseguo questi passi:
    FILE-NUOVO-FILE SORGENTE e scrivo il mio bel programmino, che posto qui di seguito:
    codice:
    #include<pthread.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<limits.h>
    #include<unistd.h>
    #include<errno.h>
    
    #define MAX_TURISTI 5
    
    
    typedef struct 
    {
    	pthread_mutex_t gioconda;
    	pthread_cond_t turno;
    	int numturisti,turistiSosp;
    }louvre;
    
    
    louvre v;
    
    void init(louvre * L)
    {
    	
    	pthread_mutex_init(&L->gioconda,NULL);
    	pthread_cond_init(&L->turno,NULL);
    	L->numturisti=0;
    	L->turistiSosp=0;
    }
    
    void EntraTurista(void * a)
    {
    	struct timeval now;
    	struct timespec timeout;
    	
    	gettimeofday(&now,NULL);
    	timeout.tv_sec=now.tv_sec+rand()%6;
    	timeout.tv_nsec=now.tv_usec*1000;
    	int retcode;
    
    	
    	pthread_cond_timedwait(&(v.turno),&(v.gioconda),&timeout);
    	
    	  pthread_mutex_lock(&(v.gioconda));
    	if (v.numturisti<=5)
    	{   
    		++v.numturisti;
    		printf("Un turista entra\n  In totale ci sono %d turisti \n",v.numturisti);
    		guarda(&v);
    	}
    	
    	else  if(v.numturisti>5)
    	{
    		v.turistiSosp++;
    		printf("Un turista aspetta fuori\n In totale ci sono %d turisti che aspettano \n\n",v.turistiSosp);
    		retcode=pthread_cond_wait(&(v.turno),&(v.gioconda));
    		
    		v.turistiSosp--;
    	}
    	
    	
    
    	printf("Un turista esce \n");
    	pthread_mutex_unlock(&(v.gioconda));
    	
    	
    }
    
    
    void guarda(louvre * _v)
    {
    	if(_v->numturisti<=5)
    	{
    		pthread_mutex_lock(&(_v->gioconda));
    		printf("Ci sono %d turisti che guardano la gioconda \n",_v->numturisti);
    	
    	
    		_v->numturisti--;  
    		pthread_cond_signal(&(_v->turno));
    	}
    	
    }
    
    
    
    
    
    int main()
    {
    	pthread_t visitor[50];
    	
    	init(&v);
    	
    	int i;
    	
    	for(i=0;i<50;i++)
    	{
    		pthread_create(&visitor[i],NULL,EntraTurista,NULL);
    		sleep(3);
    	}
    	
    	for(i=0;i<50;i++)
    	{
    		pthread_join(visitor[i],NULL);
    	}
    	
    	exit( 0);
    }
    poi lo salvo:museo.c e clicco su:ESEGUI-COMPILA:
    Appena compilo mi escono tutti una serie di errori:
    No such file or directory.
    14 museo.c syntax error before "pthread_mutex_t"
    14 C:\Documents and Settings\user\Documenti\museo.c [Warning] no semicolon at end of struct or union
    15 C:\Documents and Settings\user\Documenti\museo.c [Warning] data definition has no type or storage class
    17 C:\Documents and Settings\user\Documenti\museo.c syntax error before '}' token
    20 C:\Documents and Settings\user\Documenti\museo.c syntax error before "v"

    ed altri errori.

    Coma mai?dove sbaglio?
    Grazie mille a tutti in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Cerca, in futuro, di utilizzare dei titoli più significativi: il 90% delle discussioni qui presenti sono postate da persone che hanno "Problemi con C", ma ciascuna rappresenta un problema specifico.

    Modifico io il titolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Scusami, hai ragione...grazie epr aver modificato il titolo.

  4. #4
    studiati bene la sintassi del "typedef":

    codice:
    typedef struct IdentificatoreCheVuoi
    {
    	pthread_mutex_t gioconda;
    	pthread_cond_t turno;
    	int numturisti,turistiSosp;
    }louvre;
    in cui "lovre" è definito come sinonimo di "struct IdentificatoreCheVuoi".
    E cambia compilatore ;-)

    EDIT: dovrebbe compilare anche senza "IdentificatoreCheVuoi"... ma con "IdentificatoreCheVuoi" è certamente più portabile ;-)

  5. #5
    Ok vado a studiarla e ti faccio sapere. MA per Windows che compilatore dovrei usare?
    Grazie mille.

  6. #6
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    visual c++ 2008 express o mingw

  7. #7
    Code::Blocks..

  8. #8
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Code::Blocks
    che non è un compilatore

  9. #9
    Si hai ragione, pero' e' un ide il cui compilatore e' gcc..Quindi stavo consigliando il tutto io..

  10. #10
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    il cui compilatore è il mingw che è il porting del gcc per win

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.