begin process at 2012 02 11 22:21:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

stucture,pointeurs en c


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

stucture,pointeurs en c

vendredi 7 novembre 2008 à 23:48:20 | stucture,pointeurs en c

sdiri_med



salut pr tou l'monde
qui peux m'aidé a resoudre se probléme en c ala base des structures & les pointeur  :
1 /  écrire un tableau de 20 éléments (etudiants).un etudiant et défini par son :
nom
prénom
spécialité
CIN =>un nbre  entier
NCE=>un nbre  entier
niveau=>chiane de caractéres
groupe=>un nbre entier
moyen général=>float
2 / saisir les 20 etudiant en utilisant un pointeur sur le tableau d'étudiants
3 / afficher les etudiants dont le nom commence par 'c'.
vrément c trés urgent pour moi d'une part pour amélioré mon note de test deuxiement en regardent le code source j'vai comprendre mieux cette partie en c 
merci bcp d'avence

samedi 8 novembre 2008 à 02:15:52 | Re : stucture,pointeurs en c

tarkos01

Réponse acceptée !
Pour commencer je te conseillerai d'utiliser struct avec typedefcela va t'éviter de réécrire partout "struct".

exemple de définition d'une structure:

typedefstruct Nom_de_ta_structure Nom_de_ta_structure; /*(ce n'est pas une erreur il y a 2 fois le nom de la structure séparé par un espace terminé par un point virgule).*/
struct Nom_de_ta_structure {
         char nom[taille]; //à toi de fixer la taille du tableau
         char prenom[taille]; //idem
         long CIN;
         long NCE;
         ...
}; //il est importante de mettre le point virgule après l'accolade

 /*par contre il faut aussi initialiser toutes
déclaration interne à ta structure; faut le faire avec des boucles c'est plus rapide*/

/*mais si tu veux que ce soit manuel pour cet exemple il faut proceder comme ca*/
Nom_de_ta_structure Nom_de_ta_variable = {"","",0,0};/*2 guillement pour les char et 0 pour les nombres*/


/*tu déclare un tableau de 20 Nom_de_ta_structure*/
void fonction_exemple (void){
Nom_de_ta_structure tab[19];
tab[0].nom = "chaîne nom";
tab[0].prenom = "chaîne prenom";
tab[0].CIN = 100;
   ...
}

j'espers t'avoir deja aidé poru la comprehension de structures. corrigez s'il ya des erreurs merci.





TaRkOs
samedi 8 novembre 2008 à 02:30:50 | Re : stucture,pointeurs en c

sdiri_med



vraimment vraimment merci bcp un trés bon travail est une bonne explication j'vé faire le max pour faire un code correcte 

samedi 15 novembre 2008 à 20:55:08 | Re : stucture,pointeurs en c

sdiri_med



salut les pro salut tarkos01

voila mon code "compilateur devc++ der version sous windows vista " svp de corrigé mes fauttes et de me guidé NOTE: ce qu'il m'interesse le plus est la partie de pointeur sur le tableau de 20 etudiants comment je peux le crée et le manipulé sur la struct merci bien d'avence.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct etud etud;
 struct etud
 {
        long cin;
        long nce;
        long niveau;
        float moyenne;
        char groupe[3];
        char specialite[15];
        char prenom[15];
        char nom[15];
        } ;
struct etud *tab[19];

 int i=0;
          void lettrec (etud tab[])
 {


   
     for(i=0;i<20;i++)
  
     {
                      printf("donner le nom de l'etudiant num \n",i);
                      scanf("%s",&tab[i].nom);
                      printf("donner le prenom de l'etudiant\n",i);
                      scanf("%s",&tab[i].prenom);
                      printf("donner le cin de l'etudiant\n");
                      scanf("%d",&tab[i].cin);
                      printf("donner le nce \n");
                      scanf("%d",&tab[i].nce);
                      printf("donner son niveau\n");
                      scanf("%d",&tab[i].niveau);
                      printf("donner la moyenne\n");
                      scanf("%f",&tab[i].moyenne);
                      printf("donner son groupe\n");
                      scanf("%s",&tab[i].groupe);
                      printf("donner son specialité\n");
                      scanf("%s",&tab[i].specialite);
      } 

 for (i=0;i<19;i++)
{

if (*(tab[i].nom) = 'c')
 {
  printf("%s",*tab[i].nom) ;
}
}

}

 main ()
 {
  void lettrec (etud tab[]);
 getch();
 return(0);
}


samedi 15 novembre 2008 à 22:47:57 | Re : stucture,pointeurs en c

tarkos01

Salut sdiri_med,

pour la déclaration de ton tableau tu n'a pas besoin de mettre l'étoile devant car etud tab[19] est deja un pointeur qui pointe vers 19 types de ta structure "etud"



 for (i=0;i<19;i++) >>> tu veux verifier les 20 or dans cette boucle il va verifier de 0 a 18 il faut que utlise <=   for(i=0;i<=19;i++)
{

"if (*(tab[i].nom) = 'c')    "  >>>  cette partie doit etre une comparaison => if (tab[i].nom == 'c') ... mais ca ne devrait pas fonctionner ca tu compare un caracter à une chaine de caracters. il faut que tu inclus la librairie "string" => #include <string>
tu fais ensuite une comparaison avec strbrk ou je ne sais plus quelle est la 2eme fonction qui permet de rechercher un caracter dans une chaine et tu fais un test pour savoir si c'est le premier caracter.

 {
  printf("%s",*tab[i].nom) ;
}
}
  void lettrec (etud tab[]); je suppose que c'est le prototype si c'est le cas il faut le mettre apres les includes.
getch() je vois pas ce que ca fait la

je me penche sur ton code et quand je finis de tester je t'écris.
dimanche 16 novembre 2008 à 05:41:56 | Re : stucture,pointeurs en c

tarkos01

Réponse acceptée !
voila amigo en espérant que ca t'aide sous inux ca tourne sous windows je ne saurai pas te dire :)


/*Includes*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<float.h>


/*Protoypes: ils te permettent de rendre tes fonctions flexibles tu pourra mettre tes fonctions apres le main par exemple c'est pour dire o compilateur que cette fonction existe*/
void netoyer (void);
void lettrec (void);
int test (void);

/* Définition de structure, je vois que tu es un pro maintenant :p */

typedef struct etud etud;
struct etud
{
  long cin;
  long nce;
  long niveau;
  float moyenne;
  char groupe[100];
  char specialite[100];
  char prenom[50];
  char nom[50];
} ;


/*Code*/

int main (){
  lettrec ();
  // test();
  return 0;
}

/* Fonction qui va vider la mémoire temporaire car je vois que tu aime les scanf ;) , scanf laisse souvent des "parasites" dans la mémoire tampon tres souvent ca provoque des erreurs pour la suite du code alors faut vider le cache a cahque fois que tu utilise scanf il y a une fonction qui fait deja ca : fflush() */

void netoyer (void){
  char junk[80];
  gets(junk);
}


/*A éviter les variables globales*/



void lettrec (){
  int i;
  int a=0, b=0;
  char *temp, *temp_maj;
  etud *tab;
  if((tab = malloc (19*sizeof(etud)))==NULL)/* on test l'allocation mémoire. ceci est un tableau t'inquiete pas :)) */
    fprintf(stderr,"allocation mémoire échouée");

  for(i=0;i<=6;i++)
    
    {
      printf("donner le nom de l'etudiant %d \n",i);
      fgets(tab[i].nom,255, stdin);/*Pour les chaines de caracter je te conseil plutot d'utiliser fgets.*/
      printf("donner le prenom de l'etudiant %d\n",i);
      fgets(tab[i].prenom,255, stdin);
      printf("donner le cin de l'etudiant %d\n", i);
      scanf("%ld",&tab[i].cin);
      netoyer();/*permet de vider les parasite dans la memorie temporaire*/
      printf("donner le nce de l'etudiant %d\n", i);
      scanf("%ld",&tab[i].nce);
      netoyer();
      printf("donner le niveau de l'etudiant %d\n", i);
      scanf("%ld",&tab[i].niveau);
      netoyer();
      printf("donner la moyenne de l'etudiant %d\n", i);
      scanf("%lf",&tab[i].moyenne);
      netoyer();
      printf("donner le groupe de l'etudiant %d\n", i);
      fgets(tab[i].groupe,255, stdin);
      printf("donner la specialité de l'etudiant %d\n", i);
      fgets(tab[i].specialite,255, stdin);
      
    }
  printf ("\n Nom commençant par 'c': \n");
  for (i=0;i<=6;i++){
    temp_maj = strchr(tab[i].nom, 'C');
    temp = strchr(tab[i].nom, 'c');/*on cherche avec strchr le caracter c*/
    if(((a = (temp - tab[i].nom))==0)||((b = (temp_maj - tab[i].nom))==0))/*un peu compliqué on soustrait le depar de la chaine avec la position de la lettre c que renvoi strchr si cette valeur vaut 0 ca veut dire que c est la premiere lettre du prenom*/
    printf("\n %s position dans le tableau: %d\n\n",tab[i].nom, i);
  }
  free(tab);/*On libere l'espace mémoire alloué*/
 
}
dimanche 16 novembre 2008 à 05:45:33 | Re : stucture,pointeurs en c

tarkos01

arf j'ai oublié de changer dans les boucles for il faut mettre 19 au lieu de 6

a deux endroits

TaRkOs Le FéRoCe
lundi 17 novembre 2008 à 20:35:40 | Re : stucture,pointeurs en c

tarkos01

et l'allocation doit etre également a 20 et non pas 19. la fonction test ne sert a rien tu peux l'enlever.

TaRkOs Le FéRoCe


Cette discussion est classée dans : tableau, pointeurs, pointeur, nbre, stucture


Répondre à ce message

Sujets en rapport avec ce message

Structures, pointeurs, malloc et realloc reunis !! :) [ par mindark ] Alors la, je suis completement coulé !Voila mon probleme :J'ai une tableau "grid" qui est un tableau de structures "cell" :struct cell {bool bloquant; je comprend plus rien(pointeur) [ par bidules ] Bonjour,Pour moi on utilise les pointeur pour creer des tableau dynamiquement.or j'ai reussi a en declarer un avec une taille entrer a l'aide d'une va tableau de structures type pointeur [ par chocho ] Voila, je fait en c unpetit utilitaire de gestion d'adhérents.pour cela j'uilise un tableau de structure adhérent composée de deux pointeurs char *nom Mémoire partagée et pointeur [ par darsh99 ] Bonjour,J'essai de faire passer un tableau dynamique, un pointeur donc, d'un programme à un autre, l'adresse est bien passée et les champs non dynamiq Pointeurs [ par Nykkoo ] Salut,Etant debutant dans la programmation en C, j'arrive aux chapitres des pointeurs (sniff) et je me trouve confonté aux problemes suivants :double pointeurs [ par djkill55 ] bonjour,j aimerai savoir cmt on fait un scanf sur une suite de pointeur, je m explike, je dois faire ca ms sans utiliser les [] , cad les tableux, ms POINTEURS sur pointeurs [ par ledeveloppeurfou ] Voila je suis en train de construire une aplication pour une jeu de role, et je suis bloqué. Il me faudrait acceder à des pointeurs en employant de pr tableau et pointeur [ par cognac ] Bonjour,Je tente de faire apparaitre les mois de l'année (simple mais pour un débutant....). Bon il y a toujours "cout"12 fois mais j'ai pensé à un ta appeler un tableau... [ par ilimo ] bonjour,voici mon probleme :1- j'ai 3 classes : a, b, c2- classe "a" contient un tableau de pointeur sur pointeur de classe "b" : b **tab;3- j'initial passer un tableau de pointeurs en parametres [ par achirane ] bonjour,je debute en C (dur..) et j'ai un pb qui va surement vous faire ricaner ;-) :je voudrais passer un tableau de pointeurs en parametre a ma fonc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales