Mi è stato dato questo esercizio da fare per scuola, qualcuno può aiutarmi che io non ne sono in grado?

di Anonimizzato29973 il
23 risposte
Questo è l'esercizio che mi è stato dato:


A. Programming task:
The University wantsto make a basic graphical display to show how many people received different
gradesfor a piece of work on a module. You are required to write a program in C++ that achieves this.
The specification of the program is given below.
Specification
1. The program should allow the tutor to enter the various marks which the students have been
awarded, until the tutor enters a mark exceeding 100.
At this point the program should display a histogram using stars. Each star represents a student
who achieved a module mark in the range shown below.
You will find an example of the program output below. The example below shows the distribution
of marksfor 20 students. Your program should work with any number of student marks entered.
Example output:
0-29 ***
30-39 *****
40-69 ********
70-100 ****
20 students in total.
2. As the tutor enters each mark, a counter should count the number ofmarks which have been
entered per student.
Use four categories for mark range: 0-29, 30-39, 40-69, 70-100
2 | Page
3. Make sure the display is neatly formatted as in the example above.
4. Your program should make use of ‘loops’ for the display of each category.
5. After the histogram, a variety of statisticsshould be displayed such as: average mark awarded,
number of students passing, highest mark, and lowestmark


QUESTO è IL MIO LAVORO:


#include <iostream>
using namespace std;

int Mark, Rage1, Rage2, Rage3, Rage4 = 0;

int main() {
while (Mark <= 100) {
cout << "Enter Mark:"; cin >> Mark;
if (Mark >= 0 & Mark <= 29) {
Rage1++;
}
else if (Mark >= 30 & Mark <= 39) {
Rage2++;
}
else if (Mark >= 40 & Mark <= 69) {
Rage3++;
}
else if (Mark >= 70 & Mark <= 100) {
Rage4++;
}

char i;
i = 0;
for (i = "*"; i = Rage1; i++)
cout << "0-29" "i" << endl;
for (i = "*"; i = Rage2; i++)
cout << "30-39" "i" << endl;
for (i = "*"; i = Rage3; i++)
cout << "40-69" "i" << endl;
for (i = "*"; i = Rage4; i++)
cout << "70-100" "i" << endl;
}

return 0;
}

SE QUALCUNO FOSSE COSì GENTILE DA DIRMI DOVE HO SBAGLIATO E COME CORREGGERLO NE SAREI MOLTO FELICE.

23 Risposte

  • Usa un titolo diverso per il thread
    Usa i tag code per il codice nel forum
    Non scrivere in maiuscolo
    Spiega che problema hai con il codice


    La variabile Mark all'inizio deve avere un valore
  • Il problema che ho è nella seconda parte quando ho tutti i contatori, non so come passare da quei dati (rage1,2,3,4) all istogramma con gli asterischi, mi è stato detto di usare un for loop ma il modo in cui lo usato io è sbagliato
  • Non hai ancora fatto nulla di quello che ti avevo chiesto ... specialmente i tag CODE
  • #C++ #forloop #whileloop intendi questi per tag? Non capisco di cosa stai parlando, scusami, il mio problema è nella seconda parte quando ho tutti i contatori (rage), non so come passare da quei dati (rage1,2,3,4) all istogramma con gli asterischi, mi è stato detto di usare un for loop ma il modo in cui l'ho usato io è sbagliato
  • Intende il pulsante < / >
    
    #include <iostream>
    using namespace std;
    
    int Mark, Rage1, Rage2, Rage3, Rage4 = 0;
    
    int main() {
    while (Mark <= 100) {
    cout << "Enter Mark:"; cin >> Mark;
    if (Mark >= 0 & Mark <= 29) {
    Rage1++;
    }
    else if (Mark >= 30 & Mark <= 39) {
    Rage2++;
    }
    else if (Mark >= 40 & Mark <= 69) {
    Rage3++;
    }
    else if (Mark >= 70 & Mark <= 100) {
    Rage4++;
    }
    
    char i;
    i = 0;
    for (i = "*"; i = Rage1; i++)
    cout << "0-29" "i" << endl;
    for (i = "*"; i = Rage2; i++)
    cout << "30-39" "i" << endl;
    for (i = "*"; i = Rage3; i++)
    cout << "40-69" "i" << endl;
    for (i = "*"; i = Rage4; i++)
    cout << "70-100" "i" << endl;
    }
    
    return 0;
    }
    

    Sui for finali stai complicando le cose. Ti serve il for classico con int i che parte da zero
  • Sul Mark vale zero - non si capiva bene che era globale senza i tag CODE. Perché hai inizializzato solo Rage4 allora?
  • Quindi devo inizializzare tutti ponendoli uguali a zero giusto? E scusami per l'ignoranza ma sono proprio agli inizi, mi potresti mostrare come scrivere il for loop nel modo corretto? Grazie davvero Weierstrass
  • La parte iniziale con le variabili azzerate è corretta.
    poi dichiari: char i e usi i nei for, char i deve essere: int i.
    Per i for, ti chiedo: non li hai mai usati in C++, oppure non li hai mai usati?
    per stampare in modo che gli asterischi vadano dopo: "0-29 "
    devi prima stampare con: cout << "0-29 "; senza endl, poi con il ciclo for aggiungi gli asterischi, alla fine del ciclo vai accapo per il prossimo conteggio.
    il for si imposta:
    
     for (i = 0; i < Rage1; i++)
    
  • Grazie mille rubik, quindi se ho capito bene dopo il cout <<" 0-29"; devo immettere il for loop e devo ripetere la cosa per tutti e quattro le fasce di voto giusto??
  • nicco_sale ha scritto:


    Grazie mille rubik, quindi se ho capito bene dopo il cout <<" 0-29"; devo immettere il for loop e devo ripetere la cosa per tutti e quattro le fasce di voto giusto??
    giusto e dentro ai cicli for, stampi solo gli asterischi senza andare accapo.
  • nicco_sale ha scritto:


    Quindi devo inizializzare tutti ponendoli uguali a zero giusto?
    Sono inizializzate a zero automaticamente in quanto variabili globali, quindi non c'era bisogno di specificare Rage4 = 0. Attenzione che non è così se le dichiari dentro al main(), in quel caso avrebbero valore indefinito e rischi di fare pasticci.
  • Dal cellulare senza tag CODE non avevo notato che stava fuori dal main ... ecco perché usare i tag è importante ...
  • Ho provato a correggerlo ma continua a non funzionare

    #include <iostream>
    using namespace std;


    int Mark = 0;
    int Rage1 = 0;
    int Rage2 = 0;
    int Rage3 = 0;
    int Rage4 = 0;
    int j = 0;
    int i = 0;
    int main() {
    for (j = 0; Mark <= 100; j++) {
    cout << "Enter Mark:"; cin >> Mark;
    if (Mark >= 0 & Mark <= 29) {
    Rage1++;
    }
    if (Mark >= 30 & Mark <= 39) {
    Rage2++;
    }
    if (Mark >= 40 & Mark <= 69) {
    Rage3++;
    }
    if (Mark >= 70 & Mark <= 100) {
    Rage4++;
    }


    cout << "0-29" << for (i = 0; i <= Rage1; i++) {
    cout << "*" << ;
    }

    cout << "30-39" << for (i = 0; i <= Rage2; i++) {
    cout << "*" << ;
    }

    cout << "40-69" << for (i = 0; i <= Rage3; i++) {
    cout << "*" << ;
    }

    cout << "70-100" << for (i = 0; i <= Rage4; i++) {
    cout << "*" << ;
    };
    };

    return 0;
    }


    qualcuno può darmi una dritta??
  • Controlla tutti i messaggi d'errore e correggi uno per volta ...

    Ad esempio, && e non &

    e così via ...

    E USA I TAG CODE!
Devi accedere o registrarti per scrivere nel forum
23 risposte