Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2013, 21:10   #1
Jeckor
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
Восклицание Проблема со структурой

Помогите разобраться, почему функция не считает средний балл учеников (функция float SrSum()). Инфу программа считывает с файла:
Yagnukov KIT-33 4.0 4.5 5.0 4.5
Clinton White_House 5.0 5.0 5.0 5.0
Petrov-Ivanov KIT-23_a 3.0 3.5 5.0 3.5

Проблема в самой функции или в том, как я её вызываю?

Код:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#define N 3
#define M 4
 
struct uchenik
    {
        char fio[15];
        char faculty[15];
        float mark[4];
    };
 
void ReadText(uchenik *);
 
void GetText(uchenik *);
 
float SrSum(uchenik *);
 
void Sort(uchenik *);
 
int _tmain(int argc, _TCHAR* argv[])
{
    struct uchenik uchenik[N];
    GetText(uchenik);
    getch();
    return 0;
}
 
void ReadText(uchenik *s)
{
    FILE *file1;
    file1=fopen("file1.txt","r");
    for (int i=0; i<N; i++)
    {
        fscanf(file1,"%s%s", &s[i].fio, &s[i].faculty);
        for (int d=0; d<M; d++)
        {
            fscanf(file1,"%f", &s[i].mark[d]);
        }
    }
}
void GetText(uchenik *s)
{
    float srsum;
    ReadText(s);
    printf("\t Surname\t   Faculty        Marks         Middle mark\n\n");
    Sort(s);
    for (int i=0; i<N; i++)
    {
        srsum=SrSum(s);
        printf("%d)\t %s\t   %s\t", i+1, s[i].fio, s[i].faculty);
        for (int d=0; d<M; d++)
        {
            printf("%.1f ", s[i].mark[d]);
        }
        printf("\t%.1f\n\n", srsum);
    }
}
 
float SrSum(uchenik *s)
{
    float sum=0;
    float srsum;
    int i,d;
    for (d=0; d<M; d++)
    {
        sum+=s[i].mark[d];
        srsum=sum/M;
    }
    return srsum;
}
 
void Sort (uchenik *s)
{
    struct uchenik sorter;
    int a,b;
    for (int i=0; i<N; i++)
        for (a=2; a>i; a--)
        {
            b=0;
            while (s[a].fio[b]==s[a-1].fio[b])
            b++;
            if (s[a].fio[b]<s[a-1].fio[b])
            {   
                sorter=s[a];
                s[a]=s[a-1];
                s[a-1]=sorter;
            }
        }
}
Jeckor вне форума Ответить с цитированием
Старый 28.10.2013, 14:32   #2
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Одна из ошибок это то что ваше i в функции float SrSum(uchenik *s) не тоже самое i которое в цикле в функции void GetText(uchenik *s)
если уж на то пошло то лучше функцию сделать такой:
Код:
void GetText(uchenik *s)
{
    float srsum = 0;
    ReadText(s);
    printf("\t Surname\t   Faculty        Marks         Middle mark\n\n");
    Sort(s);
    for (int i=0; i<N; i++)
    {
        printf("%d)\t %s\t   %s\t", i+1, s[i].fio, s[i].faculty);
        for (int d=0; d<M; d++)
        {
            srsum +=s[i].mark[d];
            printf("%.1f ", s[i].mark[d]);
        }
        printf("\t%.1f\n\n", srsum/M);
    }
}
Вы все равно при выводе всех значений балов используете цикл, зачем вам дважды делать один и тот же цикл, тем более что разница то будет в добавлении одной строчки и удалении целой функции которая будет лишней.
Может это и чушь, но это моя чушь и я ее никому не отдам.

Последний раз редактировалось Shad0wF1rst; 28.10.2013 в 14:54.
Shad0wF1rst вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со структурой (С) verx Помощь студентам 0 19.11.2012 21:36
работа со структурой Кристинка89 Общие вопросы C/C++ 1 25.03.2011 21:43
Проблема со структурой в Си. danik93 Помощь студентам 2 17.08.2010 15:49
Трудность со структурой prosto_i Microsoft Office Access 4 11.03.2010 23:11
проблема со структурой Petruha-nsk Общие вопросы C/C++ 1 18.04.2009 21:12