Solve C Program Not Printing Homework

  • Thread starter Thread starter Mrencko
  • Start date Start date
  • Tags Tags
    Printing Program
AI Thread Summary
The discussion focuses on a C program intended to calculate the percentage of students who passed and failed based on their grades. The initial code has issues, particularly with how it counts failed students, leading to incorrect outputs. The main problems identified include an out-of-bounds error and incorrect logic in the loops that determine the number of failed students. Suggested corrections involve adjusting the loop conditions and combining loops for efficiency. The final code modifications ensure that both the number of approved and failed students are displayed correctly.
Mrencko
Messages
109
Reaction score
0

Homework Statement


one teacher wants to know the % of fail and aproved of the class of "N" number of students, the minimun qualification to aprove is "7", write a program that reads the students qualifications, and then the program says the number of aproved and failed students and the % of failed and aproved students.

Homework Equations


the code is in spanish my natal languaje but i am puting the translations of the code..
alumnos=students
reprobados=failed
aprobados=aproved
calification=qualification or the average sum of examns
indice=% of failed and aproved students

The Attempt at a Solution


its almost done but the program don't show the "how much students failed the curse"

here is my code
C:
#include<stdio.h>
int main(){
int x,a[5],ia,ir,repro=0,apro=0;
for(x=0;x<5;x++){
     printf("ingrese la calificacion del alumno %d:\n",x+1);
     scanf("%d",&a[x]);
}
for(x=0;x<5;x++){
     if(a[x]>7){
     apro++;}
}
for(x=6;x>0;x--){
     if(a[x]<7){
     repro--;}
}
printf("\n\nLos alumnos aprobados son %d\n",apro);
printf("\n\nLos alumnos reprobados son %d\n",repro);
ia=(2*apro)*10;
printf("\n\nEl indice de alumnos aprobados es del %d %%\n",ia);
ir=100-ia;
printf("\n\nEl indice de alumnos reprobados es del %d %%\n",ir);
return 0; }
<<Mentor's note: post edited for clarity. Please use code tags.>>
 
Last edited by a moderator:
Physics news on Phys.org
Mrencko said:
one teacher wants to know the % of fail and aproved of the class of "N" number of students,
Your program doesn't work for arbitrary N.

Mrencko said:
its almost done but the program don't show the "how much students failed the curse"
Could you please give more details as to what doesn't work?

Mrencko said:
C:
for(x=6;x>0;x--){
     if(a[x]<7){
     repro--;}
}
The index of a is out of bounds.
 
Ok more detailed, my program when runs display every thing exept for how much students failed the curse, i mean the program do the calculations for % of failed students but don't display the number of failed students
 
DrClaude said:
Could you please give more details as to what doesn't work?
i think its more a little error than a serious code break error
 
I have no problem running your code.
 
Fixes noted in comments. I'm not sure if there are any other issues.

C:
#include<stdio.h>
int main(){
int x,a[5],ia,ir,repro=0,apro=0;
for(x=0;x<5;x++){
     printf("ingrese la calificacion del alumno %d:\n",x+1);
     scanf("%d",&a[x]);
}
for(x=0;x<5;x++){
     if(a[x]>7){
         apro++;}
}
for(x=5;x>0;x--){        /* changed 6 to 5 */
     if(a[x]<=7){        /* changed < to <= */
         repro--;}
}
printf("\n\nLos alumnos aprobados son %d\n",apro);
printf("\n\nLos alumnos reprobados son %d\n",repro);
ia=(2*apro)*10;
printf("\n\nEl indice de alumnos aprobados es del %d %%\n",ia);
ir=100-ia;
printf("\n\nEl indice de alumnos reprobados es del %d %%\n",ir);
return 0; }

The second two loops could be combined:

Code:
for(x=0;x<5;x++){
     if(a[x]>7){
         apro++;}
     else{
         repro--;}
}
 
Back
Top