[C] double avec rand.
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

[C] double avec rand.



  1. #1
    Cech

    [C] double avec rand.


    ------

    Salut la communauté.
    Le programme suivant ne comporte par d'erreur de compilation mais fait planter le terminal lors de l’exécution.
    Pouvez vous m'expliquer pourquoi s'il vous plait ?
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main (void)
    {
    int rep;
    srand(time(NULL));
    do{
    int a,b;
    a = rand()%1000;
    b = rand()%1000;
    printf("%d+%d = ?\n",a,b);
    printf("Taper 1 pour recommencer sinon autre\n");scanf("%d",rep);
    }while(rep==1);
    return 0;
    }

    -----
    Dernière modification par Cech ; 29/10/2015 à 20h42.

  2. #2
    Cech

    Re : [C] double avec rand.

    J'ai trouvé mon problème il manquait tout bêtement un & dans scanf, franchement je m'attendais pas à ce que le compilateur ma valide mon programme alors que l'argument de la fonction scanf n'était même pas une adresse... Mais bon ! Du coup je continue héhé

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main (void)
    {
    int rep;
    srand(time(NULL));
    do{
    int a,b,r;
    a = rand()%1000;
    b = rand()%1000;
    do{
    printf("%d+%d = ?\n",a,b);scanf("%d",&r);
    }while(r=a+b);
    printf("Taper 1 pour recommencer sinon autre\n");scanf("%d",&rep);
    }while(rep==1);
    return 0;
    }

    Pour l'instant mon programme est assez catégorique tant que t'as pas la bonne réponse, il insiste lol, je vais tenter de mettre de la subtilité.
    N'hésiter pas à me conseiller pour améliorer ma lisibilité.

  3. #3
    Cech

    Re : [C] double avec rand.

    C'est bon j'ai un programme conforme au cahier des charges.

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main (void)
    {
    int rep, repo;
    srand(time(NULL));
    do{
    int a,b,r;
    a = rand()%1000;
    b = rand()%1000;
    do{
    printf("%d+%d = ?\n",a,b);scanf("%d",&r);
    if (r!=a+b){
    printf("faux\n");
    printf("taper 0 pour quitter autre pour recommencer\n");scanf("%d",&re po);
    }
    }while((r=a+b)&&(repo=0));
    printf("Taper 1 pour recommencer sinon autre\n");scanf("%d",&rep);
    }while(rep==1);
    return 0;
    }

  4. #4
    Cech

    Re : [C] double avec rand.

    Je continue à avancer maintenant je vais rajouter un compteur de mauvaise réponse.
    Code:
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main (void)
    {
    	int rep, repo;
    	srand(time(NULL));
    	int m;
    	do{
    	int a,b,r;
    	a = rand()%1000;
    	b = rand()%1000;
    	do{
    	m=0;
    	m++;
    	printf("%d+%d = ?\n",a,b);scanf("%d",&r);
    	if (r!=a+b){
    		printf("faux\n");
    		printf("taper 0 pour quitter autre pour quitter\n");scanf("%d",&repo);
    	}
    	}while((r=a+b)|(repo==0));
    	printf("Taper 1 pour recommencer sinon autre\n");scanf("%d",&rep);
    	}while(rep==1);
    	printf("Le nombre de mauvaise réponses est :%d",m);
    	return 0;
    }
    Ici mon while((r=a+b)|(repo==0)); ne fonctionne pas, j'aimerais en fait avoir deux conditions pour quitter la boucle...
    Dernière modification par Jack ; 30/10/2015 à 00h01. Motif: Ajout balises code

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : [C] double avec rand.

    Pour de la programmation, l'idéal est le forum ... programmation.

    Bien présenter son code évitera à de nombreux intervenants de se détourner de ton problème de problèmes ophtalmologiques (ça pique les yeux.

    Discussion déplacée

  7. #6
    Jack
    Modérateur

    Re : [C] double avec rand.

    franchement je m'attendais pas à ce que le compilateur ma valide mon programme alors que l'argument de la fonction scanf n'était même pas une adresse...
    Ce n'est pas au compilateur de décider s'il s'agit d'une adresse valide ou non, il prend cet argument comme une adresse et tant pis si ce n'est pas la bonne.

    C'est bon j'ai un programme conforme au cahier des charges.
    Quel cahier des charges?

    Code:
    while((r=a+b)|(repo==0));
    Ca ne serait pas plutôt r == a + b?

    De plus, le OU logique, c'est || et pas |

    Et pour finir, l'opération logique devrait plutôt être un ET et pas un OU
    Dernière modification par Jack ; 30/10/2015 à 00h08.

  8. #7
    Jack
    Modérateur

    Re : [C] double avec rand.

    Je crois qu'il faut que tu reprennes cette condition de sortie de la boucle while et te souvenant que while veut dire que l'on reboucle tant que la condition est vraie

Discussions similaires

  1. Calcul intégrale double avec double changement de variable
    Par inviteef80dea9 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 21/10/2012, 11h07
  2. VMC double Flux avec double echangeur
    Par invitea301ddd2 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 11
    Dernier message: 15/03/2011, 14h44
  3. Eviter les doublons avec la fonction rand()
    Par invite03ec6464 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 17/05/2010, 08h29
  4. Fonction rand
    Par invite99edbd85 dans le forum Technologies
    Réponses: 3
    Dernier message: 27/07/2009, 13h16
  5. Matlab...Help... rand
    Par invite48d4167a dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 08/11/2005, 11h33