CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C "no matching function for call 'x' "

Drankrock
Drankrock
Niveau 2
05 septembre 2017 à 19:00:22

Bonjour, je demane votre aide car je suis désespéré, j'essaye de faire un programme en C qui me dit quels sont les nombres premiers parmis les 1000 premiers integers. Je vous laisse le code, meme s'il est assez imbuvable.

Si quelqu'un peut m'aider, il aura ma reconnaissance..

  1. include <stdlib.h>
  2. include <stdio.h>
  1. define taille_max 1000

/*cette fonction permet de supprimer de tab tous les nombres divisibles par number. En commencant par 2, puis 3, etc.. */
int cpygood(int *tab[], int position, int number)
{
int position3=position;
int i=0; int copytab[taille_max]={0};
for(i=number;i<taille_max;i++)
{
if((i%number)!=0)
{
copytab[position3]=i;
position3++;
}
}
for(int j=0;j<taille_max;j++){
if( copytab[j]==0)
j=taille_max+1;
*tab[j]=copytab[j];}

return position3;
}

int main()
{
int position=0, position2=0;
int *tab[taille_max];
for(int i=2;i<taille_max;i++){
*tab[i]=i;
}
for(int k=0;k<taille_max;k++)
{
position2= cpygood(*tab, position, k);
position=position2;
}

for(int l=0;l<taille_max;l++)
printf("%d",*tab[l]);

return 0;
}

Drankrock
Drankrock
Niveau 2
05 septembre 2017 à 19:02:41

Les \# font dde la maardeu. Et bordel tous les espaces lnt disparu.
Les erreurs que j'ai sont "no matching function for call to 'cpygood'"

sentrance
sentrance
Niveau 10
05 septembre 2017 à 19:43:09

Alors déjà par pitié il y a une balise code et en plus elle est reconnaissable. Donc utilises la.

    include <stdlib.h>
    include <stdio.h>

    define taille_max 1000

/*cette fonction permet de supprimer de tab tous les nombres divisibles par number. En commencant par 2, puis 3, etc.. */
int cpygood(int *tab[], int position, int number)
{
int position3=position;
int i=0; int copytab[taille_max]={0};
for(i=number;i<taille_max;i++)
{
if((i%number)!=0)
{
copytab[position3]=i;
position3++;
}
}
for(int j=0;j<taille_max;j++){
if( copytab[j]==0)
j=taille_max+1;
*tab[j]=copytab[j];}

return position3;
}

int main()
{
int position=0, position2=0;
int *tab[taille_max];
for(int i=2;i<taille_max;i++){
*tab[i]=i;
}
for(int k=0;k<taille_max;k++)
{
position2= cpygood(*tab, position, k);
position=position2;
}

for(int l=0;l<taille_max;l++)
printf("%d",*tab[l]);

return 0;
}

Ensuite j'ai plusieurs questions.

int *tab[taille_max];

Pourquoi un pointeur de tableau?

int tab[taille_max];
for (int i = 2; i < taille_max; i++)
tab[i] = i;

me semble plus approprié.

Là je peux pas tester mais il me semble que dans ton prototype tu demandes un pointeur de tableau, or tu lui envoies un pointeur, du coup il doit pas aimer (faudrait que tu cast, mais c'est dégueux, alors avec la correction du dessus c'est mieux).

 int cpygood(int *tab[], int position, int number)

deviendrait :
int cpygood(int *tab, int position, int number)

et

position2= cpygood(*tab, position, k);

deviendrait
position2= cpygood(tab, position, k);

PS: je suis pas chez moi je peux pas encore tester le code, mais je pense que c'est une piste d'amélioration en tout cas.

Message édité le 05 septembre 2017 à 19:44:25 par sentrance
Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment