0
votes

C Programme de marque globale et pourcentage

Si les marques obtenues par un étudiant sur cinq sujets différents sont entrées via le clavier, écrivez un programme pour connaître les marques d'agrégats et les marques de pourcentage obtenues par l'élève. Supposons que les marques maximales pouvant être obtenues par un élève de chaque sujet est de 100.

mon code: xxx

sortie: xxx

Les marques de saisie ne sont pas alignées avec des sujets et des marques de pourcentage d'Aren 't montrant. Qu'est-ce qui ne va pas ici?

c

7 commentaires

La division entière donne un résultat entier - 1/2 == 0 . Au lieu de diviser agrégat_marks par 500 , divisez-le par 500.0f - qui obligera la division de points flottants, et vous obtiendrez une variante résultat du point.


Ils ne sont pas alignés parce que vous avez imprimé chaque invite avant d'obtenir des intrants. Vous pouvez avoir scanf ("% d", & sub1); après la première invite, similaire pour les autres.


"Les marques de pourcentage ne montrent pas" - Vous ne l'avez jamais dit d'en imprimer une. Notez que % est un caractère spécial dans printf , vous devez vous échapper avec un autre % (par exemple, printf ("\ npercenter marque est:% f %% \ n ", pourcentage_marks);


@ 0x5453 Bon point, j'allais dire cela mais réalisa que "les marques de pourcentage ne montrent pas" signifie les marques, pas les signes.


Les marques de pourcentage montrent, merci !!


printf ("Entrez les marques de Sub1: \ Nsub2: \ Nsub3: \ Nsub4: \ Nsub4:"); scanf ("% D% d% d% d% d", Sub1, & Sub2, & Sub3, & Sub4, & Sub5); J'ai essayé ceci pour aligner l'entrée avec des sujets mais toujours pas aligné


@Shfirahman: scanf et printf DO orienté ligne entrée et sortie - vous n'allez pas obtenir vos invites et vos entrées à la gamme magique à l'écran de cette manière. Vous devrez imprimer la première invite, obtenir la première entrée, alors Imprimez la deuxième invite, obtenez la deuxième entrée, etc. Pensez à travailler devant une imprimante de ligne de la vieille école ou TeleType, pas un écran 2D.


3 Réponses :


1
votes

CAVEAT: EM> Ce n'est pas une réponse directe à votre problème, mais je veux que vous sortez de bon pied. Il pourrait / devrait être un commentaire à l'exception du refactoring de code.

Lorsque vous utilisez Sub1, Sub2, ... code>, cela "pleure" pour une mise en œuvre de la matrice (par exemple): P): P) > xxx pré>

et, une boucle au lieu de distinct printf / scalf code> paires pour chaque scalaire em> valeur. P>

Quand À partir de la programmation, il n'est pas toujours facile de voir le cas d'utilisation pour un tableau. Il aurait pu être [plus] évident si vous deviez entrer un nombre beaucoup plus important de marques (par exemple, 1000). P>

Quoi qu'il en soit, voici une version de votre code qui implémente un tableau: P>

#include <stdio.h>

#define SUBMAX      5

int
main(void)
{
    int idx;
    int curmark;
    int subs[SUBMAX];
    int aggregate_marks = 0;
    float percentage_marks;

    for (idx = 0;  idx < SUBMAX;  ++idx) {
        printf("Enter the marks of sub%d: ",idx + 1);
        fflush(stdout);

        scanf(" %d",&curmark);
        subs[idx] = curmark;

        aggregate_marks += curmark;
    }

    printf("Aggregate marks is: %d\n", aggregate_marks);

    percentage_marks = (aggregate_marks / 500.0) * 100;
    printf("Percentage marks is: %f%%\n", percentage_marks);

    return 0;
}


2 commentaires

Merci mais je suis juste un débutant et c'est le premier programme de chapitre.


En réalité, s'il s'agit de votre premier programme et que vous n'avez pas encore à des matrices, vous pouvez éliminer le tableau car l'agrégat ne dépend pas de cela. Vous pouvez commenter les lignes qui utilisent sous-sous . Ce n'est que si vous aviez besoin de conserver les marques individuelles, que vous auriez besoin d'un tableau. Si que faisait partie de la définition de problème, le livre aurait dû expliquer d'abord les tableaux.



-1
votes

Tout d'abord, vous pouvez utiliser 'Entrez les marques de Sub1:' dans Scanf lui-même pour EG-

    percentage_marks = (aggregate_marks*100)/500;


1 commentaires

Vous ne pouvez pas imprimer l'invite à l'aide de scanf .



0
votes

Les marques d'entrée ne sont pas alignées car strong> vous imprimez pour la première fois tous les énoncés 5 printf em>, puis exécutez scanf em> pour 5 entrées. Pour résoudre ce problème, vous pouvez d'abord utiliser des instructions printf em>, puis exécutez Scanf pour 1 sujet em>. Ex:

//program to calculate the aggregate and percentage marks of a student
#include<stdio.h>
int main()
{
        float sub1,sub2,sub3,sub4,sub5;
        float total, aggregate_marks, percentage_marks;

        printf("Enter the marks of first subject(out of 100): ");
        scanf("%f",&sub1);

        printf("Enter the marks of second subject(out of 100): ");
        scanf("%f",&sub2);

        printf("Enter the marks of third subject(out of 100): ");
        scanf("%f",&sub3);

        printf("Enter the marks of fourth subject(out of 100): ");
        scanf("%f",&sub4);

        printf("Enter the marks of fifth subject(out of 100): ");
        scanf("%f",&sub5);

        aggregate_marks = (sub1 + sub2 + sub3 + sub4 + sub5);   // formula to calculate aggregate marks
        percentage_marks = (aggregate_marks / 500) * 100;       // formula to calculate percentage marks

        printf("Aggregate marks: %.2f\n", aggregate_marks);
        printf("Percentage marks: %.2f\n", percentage_marks);

        return 0;
}


0 commentaires