begin process at 2012 05 29 07:02:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Système

 > 

Autre

 > 

incompatible types in assignment


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

incompatible types in assignment

dimanche 18 janvier 2009 à 16:56:45 | incompatible types in assignment

dranixx

Bonjour à tous

je suis débutante, et dans le cadre de mes cours je dois finir une petite interface dont en gros le but est de gérer des chevaliers...
j'en suis à la suppression d'une entrée, et il faut décaler les lignes du tableau lors d'une suppression: on supprime l'entrée 2, donc la 3 prend sa place et ainsi de suite...

mon code se trouve ici: [ Lien ]

la fonction qui pose problème est à la ligne 60...
//supprimer un chevalier + décaller les enregistrements
void delchev
j'ai essayé d'incrémenter une autre variable avant pour ne pas mettre le +1 mais ca ne marche pas mieux...

Merci beaucoup pour votre aide!
dimanche 18 janvier 2009 à 18:34:02 | Re : incompatible types in assignment

Pistol_Pete

 				 						 								Salut
Il faut que tu décales tout à partir de la position delchar

printf
("nSuppression du chevalier %sn",tab[delchev].nom);
for (i=delchev;i<(*nbchevalier-1);i++)
{
tab[i].nom = tab[i+1].nom;
tab[i].surnom = tab[i+1].surnom;
tab[i].couleurpref = tab[i+1].couleurpref;
tab[i].lexploit = tab[i+1].lexploit;
delchev++;
}
*nbchevalier -=1;
A+

____________________________________________________________________________
Mon site internet :
  [ Lien ]
[ Lien ]

dimanche 18 janvier 2009 à 18:38:49 | Re : incompatible types in assignment

ed73

Ta variable int delchev a le même nom que ta fonction delchev(). Ca doit être ça que le compilateur n'aprécie pas
ed73
dimanche 18 janvier 2009 à 19:28:39 | Re : incompatible types in assignment

dranixx

Merci pour vos réponses
ed73: j'ai changé le nom de la variable mais ca n'a pas amélioré les choses
Pistol_pete: j'ai changé ma variable par i et modifié la condition de la boucle et toujours la même erreur.... 


//supprimer un chevalier + décaller les enregistrements
  void delchev(chevalier tab[], int *nbchevalier)
  {
        int supprchev=0;
        int i=0;
        printf("Suppression d'un chevalier, veuillez entrer son numéro: \n\n\n");
        scanf ("%d",&supprchev);
        printf("\nSuppression du chevalier %s\n",tab[supprchev].nom);

        for (i=supprchev;i<*nbchevalier;i++)
            {
            tab[i].nom = tab[i+1].nom;
            tab[i].surnom = tab[i+1].surnom;
            tab[i].couleurpref = tab[i+1].couleurpref;
            tab[i].lexploit = tab[i+1].lexploit;
            supprchev++;
            }
        *nbchevalier-=1;
        system("PAUSE");
  }
dimanche 18 janvier 2009 à 19:55:12 | Re : incompatible types in assignment

Pistol_Pete

Réponse acceptée !
Oh je n'ai pas fait attention, lorsque que tu copies des char, il faut tjs utiliser strcpy
strcpy(tab[i].nom , tab[i+1].nom);

A+

____________________________________________________________________________
Mon site internet :
  [ Lien ]
[ Lien ]

dimanche 18 janvier 2009 à 20:32:09 | Re : incompatible types in assignment

dranixx

Parfait! Merci beaucoup pour ton aide
lundi 19 janvier 2009 à 19:25:11 | Re : incompatible types in assignment

Chouchou182

Bonsoir,

Plutôt que de copier un à un les différents champs de la structure, tu peux employer la fonction memcpy, définie dans string.h, qui peut copier toute la structure d'un coup.
Un avantage : si tu décides de rajouter un champ à la structure, celui-ci est automatiquement pris en compte dans la fonction delchev !
Celle-ci peut être ainsi écrite:

/* supprimer un chevalier + décaler les enregistrements */
void delchev(chevalier tab[], int *nbchevalier)
{
        int i=0;
        printf("Suppression d'un chevalier, veuillez entrer son numéro: ");
        if (scanf ("%d",&i) != 1
    || i < 0 || i >= *nbchevalier)
  {
    puts("Chevalier inconnu...\n") ;
    return ;
  }

        printf("\nSuppression du chevalier %s.\n", tab[i].nom);

        for (;i<*nbchevalier;i++)
  memcpy(tab + i, tab + i + 1, sizeof(*tab)) ;

--*nbchevalier;
}

Deux petits conseils pour la route.

1. Il est important de tester qu'il n'y a pas d'erreur. Ici par exemple il faut tester que l'utilisateur rentre bien un nombre qui est le numéro d'un chevalier. Même si l'utilisateur n'est pas malveillant, il peut se tromper.
2. Si dans ton application, supprimer un chevalier est une opération fréquente, il peut être judicieux de ne pas procéder par décalage. Par exemple déplacer uniquement le dernier du tableau à la place de l'élément supprimé est bien plus efficace mais cela «mélange» un peu le tableau. Tu peux également songer à une structure de données différente, comme la liste chaînée.

Bonne continuation.
--
Chouchou.
lundi 19 janvier 2009 à 19:29:42 | Re : incompatible types in assignment

Chouchou182

Oups,
Il faut décrémenter le nombre de chevaliers avant de faire les décalages.
Sinon, à la dernière itération de la boucle for, on copie un chevalier inexistant, ce qui peut être fâcheux.


Cette discussion est classée dans : suppression, types, in, incompatible, assignment


Répondre à ce message

Sujets en rapport avec ce message

error: incompatible types in assignment [ par l0st3d ] Salut à tous, j'essaie de copier un array de char vers une autre et je recois l'erreur "error: incompatible types in assignment"dans cette fonctionint probleme de non-lvalue in assignment [ par hacker_mt ] Bonjour, je developper un programme d'écriture de caractère ascii a partir d'un tableau 2D dont voici le code source :#include #include #include main( Dev plug-in [ par joss91 ] Bonjour, Je souhaiterais de l'aide concernant le développement d'un plugin sur MS Outlook 2007. Etant ultra novice dans ce domaine "développement plug Un container qui prend plusieurs types d'objet en C++ [ par kanta ] Bonjour à tous,Ma question concerne le c++. Je cherche un container dans lequel je pourrais mettre les objets de type différent. Par exemple dans un v probleme memoire vector [ par raphael59540 ] bonjour je rencontre des problèmes de mémoire avec mon utilisation de <span class="spellmod" title="" mce_serialized="38" hptip="Faute d'orthograph Probleme-> winsock2.h : Aucun fichier ou répertoire de ce type [ par emine88 ] Salut à tous j'essaye de realiser un programme serveur/client en C++ sous Linux avec Kdevelop ,mon probleme est: au cours de la compilation sous conso Line In audio [ par cand1de ] Bonjour.Comment accéder au flux audio délivré par un microphone (line-in) ? Sous quel forme se présente-t-il ?Merci. problème winsock2.h et ws2_32.lib [ par Lefoudeboard ] Bonjour,Pour une application j'ai besoin d'implémenter un serveur et un client UDP. Je n'ai pas de problème en ce qui concerne les fonctions à utilise suppression des balise XML [ par abdoulax ] Bonjour,<BODY lang="1033" Suppression répertoire ftp [ par papi2 ] Bonjour,Je cherche à supprimer un répertoire sur un serveur...Si le répertoire est vide... je fais avec " FtpRemoveDirectory() " ... çà marche.S'il n'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,390 sec (4)

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