Bonjour,
je suis étudiant en informatique et dans le contexte de mes cours on m'a demandé de tout d'abord créer une commande echo en C qui s'arrête lorsqu'elle lie le nombre 42 et j'ai fait cela (le code est passé donc pour ça c'est bon) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
 
int main(void) {
	int v;
	while (fscanf(stdin, "%d", &v) != EOF) {
		if (v == 42) {
			break;
		}
 
		fprintf(stdout, "%d\n", v);
	}
	return EXIT_SUCCESS;
}
Mais maintenant on me demande d'arrêterez le traitement quand la somme des trois prochains nombres est égale à 42, et j'ai beau réfléchir je ne vois pas comment faire... J'ai essayé de stocker en créant un tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(void) {
	int tab[3] = { 0 };
	fscanf(stdin, "%d", &tab[0]);
	fscanf(stdin, "%d", &tab[1]);
	while (fscanf(stdin, "%d", &tab[2]) != EOF) {
		if (tab[0]+tab[1]+tab[2] == 42) { break; }
		fprintf(stdout, "%d\n", tab[0]); 
		tab[0] = tab[1];
		tab[1] = tab[2];
	}
	system("PAUSE");
	return EXIT_SUCCESS;
}
mais ce code arrête le traitement trop tôt si on ne rencontre pas le cas où la somme des trois prochains nombre est égale à 42, j'ai essayé avec des fseek, rewind, en faisant 3 fois fscanf sur 3 variables différente puis en faisant 2 fseek pour revenir au bon endroit, mais je n'ai pas très bien compris ce qu'il se passait et ça ne marchait pas, ça n'affichait que le premier nombre entrée...
J'ai l'impression que la solution est simple car ce n'est pas censé être un exercice difficile, mais j'ai beau cherché je ne trouve rien après plusieurs heures à chercher... Est-ce que vous pourriez m'aider ? Merci d'avance.