Структуры - Ошибка с выводом среднего бала студентов - C (СИ)
Формулировка задачи:
ошибка с выводом среднего бала студентов.он всегда выходит целочисленным,хотя это не всегда так
почему так не могу понять...
#include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #include <math.h> int i=0; struct rasp { char ima[20]; int nom_zach; int otsenka1; int otsenka2; int otsenka3; int otsenka4; double sred_bal; }; int vvod(struct rasp *a) { int f,c; clrscr(); f=i+1; for(i;i<f;i++) { {printf("\n zapis %d",i+1); printf("\nvvedite ima -> "); scanf("%s",&a[i].ima); printf("vvedite nomer zatchetnoi knigi -> "); scanf("%d",&a[i].nom_zach); printf("vvedite otsenku za1ekzamen -> "); scanf("%d",&a[i].otsenka1); printf("vvedite otsenku za 2 ekzamen -> "); scanf("%d",&a[i].otsenka2); printf("vvedite otsenku za 3 ekzamen -> "); scanf("%d",&a[i].otsenka3); printf("vvedite otsenku za 4 ekzamen -> "); scanf("%d",&a[i].otsenka4); a[i].sred_bal=(((a[i].otsenka1)+(a[i].otsenka2)+(a[i].otsenka3)+(a[i].otsenka4))/4); } printf("\nprodolzit ? 1-yes 0-no\n"); scanf("%d",&c); if (c==1) f++;} return f; } void vivod(struct rasp *a,int f) { int i; clrscr(); printf("Familiay I.O. nomer zacetki 1otsenka 2otsenka 3otsenka 4otsenka sred.bal\n"); for(i=0;i<f;i++) { printf("%s %d %d %d %d %d %lg\n",a[i].ima,a[i].nom_zach,a[i].otsenka1,a[i].otsenka2,a[i].otsenka3,a[i].otsenka4,a[i].sred_bal); } return; } void sortprib(struct rasp *a,int f) { int i,g; struct rasp t; clrscr(); printf("\vvedite pynkt neobxodimoi sortirovki\n" "1-po familii \n" "2-po ybivaqniy srednego bala\n"); scanf("%d",&g); if (g==2) {printf("\sortirovka po ybivaqniy srednego bala\n"); for(i=1;i<f;i++) { while((a[i].sred_bal)<(a[i-1].sred_bal)) { t=a[i-1]; a[i-1]=a[i]; a[i]=t; if (i>1) i--; } } return; } if (g==1) {printf("\sortirovano po Familii\n"); for(i=1;i<f;i++) { while(strcmp(a[i].ima,a[i-1].ima)<0) { t=a[i-1]; a[i-1]=a[i]; a[i]=t; if (i>1) i--; } } return; } } void ob(struct rasp *a,int f) { int i;double k,p; p=0; clrscr(); printf("\sredniy bal gruppi\n"); for(i=0;i<f+1;i++) { p=p+a[i].sred_bal; } k=p/f; printf("%lg\n",k); } void filtr(struct rasp *a,int f) { int i,h; struct rasp t; clrscr(); printf("\vvedite pynkt neobxodimogo filtra\n" "1-otlichiki \n" "2-choroshisty\n" "3-studenti imeiyshie ydovletvoritelnii otsenki\n" "4-studenti ne zdavshie sessiy\n"); scanf("%d",&h); if (h==1) { printf("\otlichniki\n"); for(i=1;i<f;i++) { if (((a[i].otsenka1)==5)&&((a[i].otsenka2)==5)&&((a[i].otsenka3)==5)&&((a[i].otsenka4)==5)); printf("Familiay I.O. nomer zacetki 1otsenka 2otsenka 3otsenka 4otsenka sred.bal\n" "%s %d %d %d %d %d %lg\n",a[i].ima,a[i].nom_zach,a[i].otsenka1,a[i].otsenka2,a[i].otsenka3,a[i].otsenka4,a[i].sred_bal); // else printf("otlichnicov net"); } return; } if (h==2) {printf("\horoshisty\n"); for(i=1;i<f;i++) { if (((a[i].otsenka1)>3)&&((a[i].otsenka2)>3)&&((a[i].otsenka3)>3)&&((a[i].otsenka4)>3)&&((a[i].otsenka1)+(a[i].otsenka2)+(a[i].otsenka3)+(a[i].otsenka4))<20); printf("Familiay I.O. nomer zacetki 1otsenka 2otsenka 3otsenka 4otsenka sred.bal\n" "%s %d %d %d %d %d %lg\n",a[i].ima,a[i].nom_zach,a[i].otsenka1,a[i].otsenka2,a[i].otsenka3,a[i].otsenka4,a[i].sred_bal); // else printf("choroshistov net"); } return; } if (h==3) {printf("\studenti imeiyshie ydovletvoritelnii otsenki\n"); for(i=1;i<f;i++) { if (((a[i].otsenka1)=3)||((a[i].otsenka2)=3)||((a[i].otsenka3)=3)||((a[i].otsenka4)=3)&&((a[i].otsenka1)+(a[i].otsenka2)+(a[i].otsenka3)+(a[i].otsenka4))>11); printf("Familiay I.O. nomer zacetki 1otsenka 2otsenka 3otsenka 4otsenka sred.bal\n" "%s %d %d %d %d %d %lg\n",a[i].ima,a[i].nom_zach,a[i].otsenka1,a[i].otsenka2,a[i].otsenka3,a[i].otsenka4,a[i].sred_bal); // else printf("studentov imeiysih ydovletvoritelnii otsenki net"); } return; } if (h==4) {printf("\studenti ne sdavshie sessiy\n"); for(i=1;i<f;i++) { if (((a[i].otsenka1)<3)||((a[i].otsenka2)<3)||((a[i].otsenka3)<3)||((a[i].otsenka4)<3)); printf("Familiay I.O. nomer zacetki 1otsenka 2otsenka 3otsenka 4otsenka sred.bal\n" "%s %d %d %d %d %d %lg\n",a[i].ima,a[i].nom_zach,a[i].otsenka1,a[i].otsenka2,a[i].otsenka3,a[i].otsenka4,a[i].sred_bal); //else printf("studentov ne sdavshih sessiy net"); } return; } } void main(void) { struct rasp s[10]; int n,v; clrscr(); while(1) { printf("1. vvod dannih\n"); printf("2. sortirovka\n"); printf("3. vichislenie srednego bala gruppi\n"); printf("4. filtr\n"); printf("5. vivod dannih\n"); printf("6. VIHOD\n"); printf("\n viberete deistvie:"); scanf("%d",&v); switch (v) { case 1:{n=vvod(s);break;} case 2:{sortprib(s,n);break;} case 3:{ob(s,n);break;}; case 4:{filtr(s,n);break;}; case 5:{vivod(s,n);break;}; case 6:{exit(1);} } } }
Решение задачи: «Структуры - Ошибка с выводом среднего бала студентов»
textual
Листинг программы
printf("%s %d %d %d %d %d %lg\n",a[i].ima,a[i].nom_zach,a[i].otsenka1,a[i].otsenka2,a[i].otsenka3,a[i].otsenka4,a[i].sred_bal);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д