Besoin d'aide - Programmation
Marsh Posté le 26-12-2001 à 17:46:45
c bien un devoir que tu as a rendre? 
ta deja fais qq chose? 
Marsh Posté le 26-12-2001 à 17:55:19
//biblioteques n?cessaire a l'execution du programme 
#include <stdio.h> 
#include <string.h> 
#include <ctype.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <alloc.h> 
 
//tableaux 
#define max 100 
typedef int tableau[max]; 
 
//************************************************
*********************** 
//********************* Fonctions utilis?es ***************************** 
//************************************************
*********************** 
 
int erreur(char *msg) //fonction erreur au cas ou l'execution se passe mal 
{ 
printf("ERREUR!!! : %s\n",msg); //affichage du message d'erreur 
getchar();//on attend une saisit au clavier pour sortir 
exit(1); //on termine l'execution du programme 
return 0; 
} 
//*********************************************************************** 
 
 
int balises() //fonction de creation des balises 
{ 
char *dtete;        //pointeur pour les balises HTML 
char *titre; 
char *dbody; 
 
char *br; 
 
 FILE *html; 
 html = fopen("Devoir.htm","w+" ); 
 
 strcpy(dtete,"<html>" );     //balises HTML 
 strcpy(titre,"<head><title> Devoir GTR1 Cree par Nexo </title></head>" ); 
 strcpy(dbody,"<body>" ); 
 strcpy(br,"<BR>" );  //saut de paragraphe 
 
 
 fwrite(dtete,6,1,html);  //structure du fichier .HTML 
 fwrite(titre,strlen(titre),1,html); 
 fwrite(dbody,6,1,html); 
 fclose(html); 
 free(dbody);            //liberation de la memoire 
 free(dtete); 
 free(titre); 
 free(br); 
 
 
return 0; 
} 
 
//*********************************************************************** 
 
int finbal() //fonction de fin du fichier 
{ 
char *fbody; 
char *ftete; 
 
 FILE *fhtml; 
 fhtml = fopen("Devoir.htm","a+" ); 
 
 strcpy(fbody,"<\body>" ); 
 strcpy(ftete,"<\html>" ); 
 
 fwrite(fbody,7,1,fhtml); 
 fwrite(ftete,7,1,fhtml); 
 
 fclose(fhtml); 
 
 free(ftete);             //liberation de la memoire 
 free(fbody); 
return 0; 
} 
 
//*********************************************************************** 
int car() //on copie le cartouche dans le fichier html 
{ 
char cart[100]; //tableau de longeur 100 
char *texte[max]; 
int i=0; //servira pour la boucle 
 
 FILE *fichier; //pointeur sur une structure de type fichier 
 fichier = fopen("Matrices.c","r" );//ouverture du fichier en lecture seule 
 FILE *html; 
 html = fopen("Devoir.htm","w+" ); 
 
 
  if(!fichier)//erreur si le fichier n'est pas l? 
  { 
  erreur("Le fichier Matrices.c manque" ); 
  } 
 
 { 
 fseek(fichier,0, SEEK_SET); 
 fgets(cart,'\n',fichier); 
 fprintf(html,"%s",cart); 
 
 fclose(fichier); 
 fclose(html); 
 } 
 free(cart); 
 
 
return 0; 
} 
 
 
 
//************************************************
*********************** 
//*********************  Procedure Principale *************************** 
//************************************************
*********************** 
 
 
void main()  //procedure principale 
{ 
 
 clrscr();//on efface l'ecran sous DOS 
 
  //balises(); //appelle dela fonction balises 
 car(); 
 //	finbal(); 
} 
 
//************************************************
*********************** 
 
 
 
J'ai essaye de faire copie la premiere ligne de l'entet dans le fichier html mais ca marche pas  
 
Marsh Posté le 26-12-2001 à 20:01:09
bon alors j'ai juste regardé ta fonction car et y a qq truc qui vont pas, en dehors du fait que tu cole des comentaire C++ dans un proframme C mais bon  , j'ai mis en comentaire les modifications que j'ai faite
, j'ai mis en comentaire les modifications que j'ai faite 
 
 
int car() /*on copie le cartouche dans le fichier html */ 
{  
char cart[100]; /*tableau de longeur 100 */ 
char *texte[max]; 
FILE *fichier,*html; /* En C on peut pas déclarer les variables en plein milieu d'un bloc*/ 
int i=0; /*servira pour la boucle  
 
fichier = fopen("Matrices.c","r" );//ouverture du fichier en lecture seule  
 
 if(!fichier)/*erreur si le fichier n'est pas l? */ 
 {  
    erreur("Le fichier Matrices.c manque" );  
 }  
 else 
 {  
    html = fopen("Devoir.htm","w+" ); 
    /*fseek(fichier,0, SEEK_SET); inutile*/ 
    fgets(cart,100,fichier); /*C la taille de cart qu'il faut mettre ici*/ 
    fprintf(html,"%s",cart);  
 
    fclose(fichier);  
    fclose(html);  
 }  
/* free(cart); SURTOUT PAS DE FREE C'EST UNE VARIABLE STATIQUE*/ 
 
 
return 0;  
} 
Marsh Posté le 26-12-2001 à 21:02:48
merci ca m'aide beacoup,la copie est bonne là  
 
reste plus qu'a faire une boucle  
 
Marsh Posté le 26-12-2001 à 23:42:27
J'ai jeté un autre coup d'oeuil au reste, heu vous avez eu des cours de programmation avant qu'on vous donne ce devoir? 
 
quand tu déclare un char * et que tu veux l'utiliser comme zone de stockage, faut pas oublier d'allouer la mémoirequi va avec: 
 
char *buffer=(char*)malloc(sizeof(char)*30));/*voici un tableau de 30 charactères dont l'espace mémoire a été alloué dynamiquement, c la meme chose que char buffer[30], sauf que tu peux metre une variable dnas le premier cas, du style: char *buffer=(char*)malloc(sizeof(char)*i));*/ 
Marsh Posté le 27-12-2001 à 01:19:07
nop jamais de cours ,on a que des tp de merde ou on doit se de*** tout seul        
 
En cours c que de l'algo jamais de C  
 
 
Donc j'essais de me debrouiller comme je peux  
 
Marsh Posté le 27-12-2001 à 12:55:20
Un conseil: achéte toi un bon bouquin, ça te servira toujours  
 
Marsh Posté le 27-12-2001 à 12:58:32
Un conseil: change de prof ou d'ecole  
 
Marsh Posté le 27-12-2001 à 13:10:32
| deathsharp a écrit a écrit  : Un conseil: change de prof ou d'ecole   | 
 
 
aussi  
 
Marsh Posté le 27-12-2001 à 13:59:06
| Nexo a écrit a écrit  : nop jamais de cours ,on a que des tp de merde ou on doit se de*** tout seul | 
| Citation : Le premier but est d'appliquer en langage C les notions déjà abordées, | 
 
 
hum vous avez l'air de vous contredire.. 
t'as ete aux cours au moins  ?
 ? 
 
LEGREG 
[edtdd]--Message édité par legreg--[/edtdd]
Marsh Posté le 27-12-2001 à 14:24:43
Mouah j'vais en  cours mais comme j'ai dit on fait que de l'algo pas de C en cours!!! Le c c seulement en tp 
 
Bon une derniere question ,j'arrive pas a cree une boucle qui a partir de '/*' jusqu'a '/*' copie le contenu dans une chaine toto 
 
Ex ; /* Premiers essais de calculs sur matrices 
   fichier créé le 6/11/2001 
   pour les TP de langage C 
   Département GTR, IUT de Blois 
     */ 
Je veux commencer la saisit quand apres le /* et que la sasit ce termine apres le */ 
Pour le moment j'ai fait une boucle qui compte jusqu'a 4 et commencer apres le /* mais j'ai vu que ca conrepond pas au sujet 
Il faut faire une boucle qui des que lit /* commence la saisit et se termine a */ et copie le contenu dans toto qui sera ensuite copie dans le fichier html 
 
thx 
Marsh Posté le 28-12-2001 à 20:25:37
bon on va faire simple pour commencer: 
 
FILE *source; 
int c,fin,temp,i; 
char buffer[1024]; 
 
if(source=fopen("nomFichier","r" )) 
{ 
   
 c=fgetc(source); 
 
 while(c != EOF) 
 { 
 
  if(c == '/' && fgetc(source) == '*' 
 
   { 
       
     c=fgetc(source); 
     fin=0; 
     temp=0; 
     i=0; 
     while(c != EOF && !fin) 
      { 
         if(temp == '*' && c == '/' 
 
          { 
            fin=1; 
          } 
         else 
          { 
             if(temp) 
              { 
                 bufer[i++]=temp; 
                 temp=0; 
              } 
             if(c == '*' 
 
              { 
                temp=c; 
              } 
             else 
              { 
                buffer[i++]=c; 
              } 
 
           } 
         c=fgetc(source); 
       } 
     buffer[i]='\0'; 
    } 
   c=fgetc(source); 
 } 
} 
[edtdd]--Message édité par letoII--[/edtdd]
Marsh Posté le 28-12-2001 à 20:30:21
Merci ,j'ai fait autrement moi pour faire la selection 
 
int fonctiontri() 
{ 
char cart[100]; //tableau de longeur 100 
char *texte[max]; 
char *te[max]; 
char test[2];   //servira pour lire deux  carcateres en meme temps 
char toto[]={"/*"};//tableau contenant '/*' 
char titi[]={"*/"};//tableau contenant '*/' 
int i=0; //servira pour le comptage dans la boucle 
int ptr; //resultat de la comparaison test toto 
int ptr2;//resultat de la comparaison test titi 
 
 FILE *fichier; //pointeur sur une structure de type fichier 
 fichier = fopen("Matrices.c","r" );//ouverture du fichier en lecture seule 
 FILE *html; 
 
 
 if(!fichier)//erreur si le fichier n'est pas l? 
 { 
 erreur("Le fichier Matrices.c manque" ); 
 } 
 
 else 
 { 
  html=fopen("teste.htm","w+" );  //on ajoute a la fin du fichier 
  fgets(test,3,fichier); 
 
  ptr=strcmpi(test,toto); //on compare deux chaine 
  if (ptr==0);  //si elles sont identiques on fait la boucle 
  { 
 fgets(cart,100,fichier); 
 fprintf(html,"<H2> %s </H2>",cart); 
 
 	for(i=0;i<5000;i++)     //boucle s'arretant quand on a /* 
 	{ 
 	te[i]=fgets(test,3,fichier); 
 	ptr2=strcmpi(test,titi); 
   if(ptr2==0) 
   {break;} 
   else 
   { 
   texte[i]=fgets(cart,100,fichier); 
   fprintf(html,"%s<br> ",texte[i]); 
   } 
 	} 
  } 
 } 
 
 fclose(fichier); 
 fclose(html); 
 
return 0; 
} 
Marsh Posté le 28-12-2001 à 20:42:19
c pas que je veux être médisant, mais bon.... prend ma solution  
 
ps: t sur que t'est allé au cours d'algo?  
 
Marsh Posté le 28-12-2001 à 21:11:36
ben j'ai compile ton truc ca me met des erreurs 
 
if(source=fopen("fichier","r" )) =>Possible incorect insignement 
 
voila 
 
Ps: si malheuresemnt jv'ais vraiment en cours mais amphi c pas le top  
 
Marsh Posté le 28-12-2001 à 21:19:10
Pourtant ma belle fonction je l'avais fait avec amour ,j'arrive a copie l'en tete coorectemnt avec mon truc mais bon me reste du boulot 
 
/************************************************************************ 
 
Devoir GTR 1 :"Generation d'un document en HTML" 
Auteurs: 
Date: Mars 2002 
 
************************************************************************/ 
 
//biblioteques n?cessaire a l'execution du programme 
#include <stdio.h> 
#include <string.h> 
#include <ctype.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <alloc.h> 
 
//tableaux 
#define max 100 
typedef int tableau[max]; 
 
//************************************************
*********************** 
//********************* Fonctions utilis?es ***************************** 
//************************************************
*********************** 
 
int erreur(char *msg) //fonction erreur au cas ou l'execution se passe mal 
{ 
printf("ERREUR!!! : %s\n",msg); //affichage du message d'erreur 
getchar();//on attend une saisit au clavier pour sortir 
exit(1); //on termine l'execution du programme 
return 0; 
} 
//*********************************************************************** 
 
 
int ecriturebalisesdebut() //fonction de creation des balises 
{ 
char *dtete;        //pointeur pour les balises HTML 
char *titre; 
char *dbody; 
 
char *br; 
 
 FILE *html; 
 html = fopen("cartouc.htm","w+" ); 
 FILE *debut; 
 debut= fopen("debut.htm","w+" ); 
 
 strcpy(dtete,"<html>" );     //balises HTML 
 strcpy(titre,"<head><title> Devoir GTR1 Cree par N</title></head>" ); 
 strcpy(dbody,"<body>" ); 
 strcpy(br,"<BR>" );  //saut de paragraphe 
 
 
 fwrite(dtete,6,1,html);  //structure du fichier .HTML 
 fwrite(titre,strlen(titre),1,html); 
 fwrite(dbody,6,1,html); 
 
 fwrite(dtete,6,1,debut);  //structure du fichier .HTML 
 fwrite(titre,strlen(titre),1,debut); 
 fwrite(dbody,6,1,debut); 
 
 fclose(html); 
 fclose(debut); 
 
return 0; 
} 
 
//*********************************************************************** 
 
int ecriturebalisefin() //fonction de fin du fichier 
{ 
char *fbody; 
char *ftete; 
 
 FILE *html; 
 html = fopen("cartouc.htm","a" ); 
 
 strcpy(fbody," <\body>" ); 
 strcpy(ftete," <\html>" ); 
 
 fwrite(fbody,7,1,html); 
 fwrite(ftete,7,1,html); 
 
 fclose(html); 
 
return 0; 
} 
 
//*********************************************************************** 
int ecriturecartouche() //on copie le cartouche dans le fichier html 
{ 
char cart[100]; //tableau de longeur 100 
char *texte[max]; 
char *te[max]; 
char test[2];   //servira pour lire deux  carcateres en meme temps 
char toto[]={"/*"};//tableau contenant '/*' 
char titi[]={"*/"};//tableau contenant '*/' 
int i=0; //servira pour le comptage dans la boucle 
int ptr; //resultat de la comparaison test toto 
int ptr2;//resultat de la comparaison test titi 
 
 FILE *fichier; //pointeur sur une structure de type fichier 
 fichier = fopen("Matrices.c","r" );//ouverture du fichier en lecture seule 
 FILE *html; 
 
 
 if(!fichier)//erreur si le fichier n'est pas l? 
 { 
 erreur("Le fichier Matrices.c manque" ); 
 } 
 
 else 
 { 
  html=fopen("cartouc.htm","a+" );  //on ajoute a la fin du fichier 
  fgets(test,3,fichier); 
 
  ptr=strcmpi(test,toto); //on compare deux chaine 
  if (ptr==0);  //si elles sont identiques on fait la boucle 
  { 
 fgets(cart,100,fichier); 
 fprintf(html,"<H2> %s </H2>",cart); 
 
 	for(i=0;i<5000;i++)     //boucle s'arretant quand on a /* 
 	{ 
 	fgets(test,3,fichier); 
 	ptr2=strcmpi(test,titi); 
   if(ptr2==0) 
   {break;} 
   else 
   { 
   texte[i]=fgets(cart,100,fichier); 
   fprintf(html,"%s<br> ",texte[i]); 
   } 
 	} 
  } 
 } 
 
 fclose(fichier); 
 fclose(html); 
 
return 0; 
 
} 
//*********************************************************************** 
 
int fonctiontri() 
{ 
char cart[100]; //tableau de longeur 100 
char *texte[max]; 
char *te[max]; 
char test[2];   //servira pour lire deux  carcateres en meme temps 
char toto[]={"/*"};//tableau contenant '/*' 
char titi[]={"*/"};//tableau contenant '*/' 
int i=0; //servira pour le comptage dans la boucle 
int ptr; //resultat de la comparaison test toto 
int ptr2;//resultat de la comparaison test titi 
 
 FILE *fichier; //pointeur sur une structure de type fichier 
 fichier = fopen("Matrices.c","r" );//ouverture du fichier en lecture seule 
 FILE *html; 
 
 
 if(!fichier)//erreur si le fichier n'est pas l? 
 { 
 erreur("Le fichier Matrices.c manque" ); 
 } 
 
 else 
 { 
  html=fopen("teste.htm","w+" );  //on ajoute a la fin du fichier 
  fgets(test,3,fichier); 
 
  ptr=strcmpi(test,toto); //on compare deux chaine 
  if (ptr==0);  //si elles sont identiques on fait la boucle 
  { 
 fgets(cart,100,fichier); 
 fprintf(html,"<H2> %s </H2>",cart); 
 
 	for(i=0;i<5000;i++)     //boucle s'arretant quand on a /* 
 	{ 
 	te[i]=fgets(test,3,fichier); 
 	ptr2=strcmpi(test,titi); 
   if(ptr2==0) 
   {break;} 
   else 
   { 
   texte[i]=fgets(cart,100,fichier); 
   fprintf(html,"%s<br> ",texte[i]); 
   } 
 	} 
  } 
 } 
 
 fclose(fichier); 
 fclose(html); 
 
return 0; 
} 
 
 
 
//************************************************
*********************** 
//*********************  Procedure Principale *************************** 
//************************************************
*********************** 
 
 
void main()  //procedure principale 
{ 
 FILE *debut; //pointeur vers le fichier debut 
 
 
 char *bal; //servira pour faire un lien vers devoir.htm 
 
 clrscr();//on efface l'ecran sous DOS 
 
 ecriturebalisesdebut(); //on appelle les fonctions 
 ecriturecartouche(); 
 ecriturebalisefin(); 
 fonctiontri(); 
 
 debut=fopen("debut.htm","a+" ); //fichier contenant tout les fichier html 
 strcpy(bal,"Pour lire le cartouche cliquez ""<a href=""cartouc.htm>""la""</A>" ); 
 fwrite(bal,strlen(bal),1,debut); 
 fclose(debut); 
} 
 
//*********************************************************************** 
 
 
 
OK c bordelique ,je devrais plutot faire une fonction tri que j'appelle a chaque fois mais c a rentre pour Mars ,j'essait de faire un bon truc  
 
Les astuces sont tjs les bien venus  
 
Marsh Posté le 29-12-2001 à 23:18:42
| Nexo a écrit a écrit  : ben j'ai compile ton truc ca me met des erreurs if(source=fopen("fichier","r" )) =>Possible incorect insignement voila Ps: si malheuresemnt jv'ais vraiment en cours mais amphi c pas le top   | 
 
 
c normal, mais c juste un warning tu peux l'ignorer, tu compile avec quoi au fait? 
Marsh Posté le 29-12-2001 à 23:31:20
je compile avec turbo C++ 3.0,on utilise ca en tp 
 
Desole d'etre pas un genie de C  
 
Marsh Posté le 30-12-2001 à 19:56:13
Faut bien apprendre un jour ou l'autre, personne a la science infuse  
 
Marsh Posté le 31-12-2001 à 16:11:40
hum z'avez pas des bon livre a me conseiller pour le C ?? 
 
thx  
 
Marsh Posté le 01-01-2002 à 00:36:52
Essaye Le Langage C par Kernighan & Ritchie 
 
pour les bases c super 
Marsh Posté le 01-01-2002 à 03:57:40
 
   
   
   
   
   
   
   
   
   
   
   
   
   
  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  
  
   
   
   
   
   
   
   
   
   
   
   
   
   
  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  
  
   
   
   :bounce:  :jap:  :sleep:  :sweat:  :gun:  :hello:  :eek2:
  :bounce:  :jap:  :sleep:  :sweat:  :gun:  :hello:  :eek2:   
   
   uch:
uch:  
   
   
   
   t1cable:
t1cable:   :na:  :sarcastic:  :crazy:  :wahoo:  :lol:
  :na:  :sarcastic:  :crazy:  :wahoo:  :lol:   :fou:  :non:  :ange:  :fuck:  :love:
  :fou:  :non:  :ange:  :fuck:  :love:  
 :benetton:  :cry:  :hap:  :sol:  :bounce:  :jap:  :sleep:  :sweat:  :gun:  :hello:  :eek2:   
   
   uch:
uch:  
   
   
   
   t1cable:
t1cable:   :na:  :sarcastic:  :crazy:  :wahoo:  :lol:
  :na:  :sarcastic:  :crazy:  :wahoo:  :lol:   :fou:  :non:  :ange:  :fuck:  :love:
  :fou:  :non:  :ange:  :fuck:  :love:  
 :benetton:  :cry:  :hap:  :sol:  :bounce:  :jap:  :sleep:  :sweat:  :gun:  :hello:  :eek2:   
   
   uch:
uch:  
   
   
   
   t1cable:
t1cable:   :na:  :sarcastic:  :crazy:  :wahoo:  :lol:
  :na:  :sarcastic:  :crazy:  :wahoo:  :lol:   :fou:  :non:  :ange:  :fuck:  :love:
  :fou:  :non:  :ange:  :fuck:  :love:  
 :benetton:  :cry:  :hap:  :sol:  :bounce:  :jap:  :sleep:  :sweat:  :gun:  :hello:  :eek2:   
   
   uch:
uch:  
   
   
   
   t1cable:
t1cable:   :na:  :sarcastic:  :crazy:  :wahoo:  :lol:
  :na:  :sarcastic:  :crazy:  :wahoo:  :lol:   :fou:  :non:  :ange:  :fuck:  :love:
  :fou:  :non:  :ange:  :fuck:  :love:  
c l an 2000!  bonne année! 
[edtdd]--Message édité par veryfree--[/edtdd]
Marsh Posté le 26-12-2001 à 17:37:56
http://multimania.com/nexo1111/devoirIndex.html
 ca marche pas ,ca copie n'importe quoi ;(
 ca marche pas ,ca copie n'importe quoi ;( 
j'arrive a rien