Posté par Panhwein .
Évalué à 1.
Dernière modification le 21 février 2020 à 16:21.
#include<stdio.h>#include<stdlib.h>unsignedintindex_last_occurrence(chartableau[],charlettre){intsize=6;unsignedintindex=0,i;for(i=0;i<=size-1;i=i+1){if(tableau[i]==lettre){index=i+1;returnindex;}}returnNONE;}intmain(void){chartableau[]={'a','n','a','n','a','s','\0'},lettre;intsize=6;unsignedintposition;printf("donner la lettre: ");scanf("%c",&lettre);position=index_last_occurrence(tableau,lettre);if(position>0){printf("Position: %i",position);}else{printf("Pas glop");}returnEXIT_SUCCESS;}
Bon c'est moche mais ca marche.
Donc comme dit plus bas, tu de declare par i dans le for, le return dans le if, et tu incremente de 1 parceque ca compte à partir de zero.
Ensuite quand tu appelle ta fonction index_last_occurrence(), il te faut aussi récuperer la valeur de retour!
Et comme dit plus bas, strlen() et plus judicieux(faut inclure string.h)
Parce que tu initialises index à 0 à chaque tour de boucle.
Tip #1: il existe une fonction strlen pour connaitre la taille d'une chaîne de caractères, ce qui évite de coder la taille en dur, et de risquer un beau segfault le jour où tu passes une chaîne plus courte.
Tip #2: et si tu commençais par la fin de la chaîne? :-)
Non sérieux,
"int j" ca me rapelle trop une chanson des rolling stones, je l'ai dans la tête pour la journée :(
Tu va finir par te faire griller par ton prof :)
Et tu as un soucis avec tes return: si une function n'est pas void, tu récupère la valeur. Et après printf()
# Peut-etre comme ca
Posté par Panhwein . Évalué à 1. Dernière modification le 07 mars 2019 à 13:51.
Le return index doit etre dans le if.
Comme la mis à coté, ta boucle ne fait qu'un seul tour.
De plus tu est censé renvoyer un int, pas un unsigned int(index)
[^] # Re: Peut-etre comme ca
Posté par Panhwein . Évalué à 1. Dernière modification le 21 février 2020 à 16:21.
Bon c'est moche mais ca marche.
Donc comme dit plus bas, tu de declare par i dans le for, le return dans le if, et tu incremente de 1 parceque ca compte à partir de zero.
Ensuite quand tu appelle ta fonction index_last_occurrence(), il te faut aussi récuperer la valeur de retour!
Et comme dit plus bas, strlen() et plus judicieux(faut inclure string.h)
# Relis le code...
Posté par arnaudus . Évalué à 1.
Parce que tu initialises index à 0 à chaque tour de boucle.
# dernière occurrence
Posté par Fortniteforever . Évalué à 1.
J'ai fais sa mais même problème pour le NONE alors que ma fonction retourne bien ce qu'il faut pour l'indice de la lettre…:
include
include
ifndef NONE
define NONE 0/*
endif
int index_last_occurrence(char tableau[], char lettre){
int i=0;
while(tableau[i]!='\0'){
i++;
}
printf("la taille du tableau est: %d\n",i);
}
int main(void) {
char tableau[]={'a','n','a','n','a','s','\0'},lettre;
printf("donner la lettre: ");
scanf("%c",&lettre);
index_last_occurrence(tableau, lettre);
return EXIT_SUCCESS;
}
[^] # Re: dernière occurrence
Posté par Fortniteforever . Évalué à 1. Dernière modification le 07 mars 2019 à 14:47.
Problème résolu, il faut juste sortir le return NONE de la boucle for.
# Int j
Posté par Panhwein . Évalué à 1.
Non sérieux,
"int j" ca me rapelle trop une chanson des rolling stones, je l'ai dans la tête pour la journée :(
Tu va finir par te faire griller par ton prof :)
Et tu as un soucis avec tes return: si une function n'est pas void, tu récupère la valeur. Et après printf()
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.