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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 14:11   #1
Mcduff
Пользователь
 
Регистрация: 31.10.2011
Сообщений: 27
Печаль Сумма строк

Может кому-то это покажется простым, но не для меня!
Цель такая:
Имеется текстовой файл куда записаны, например, имя ученика и результат теста (100-бальная шкала) таким образом:

Pavel
99
Maria
64
Leonid
04
...
и т.д.

Необходимо вычислить средний балл, и на сколько процентов отличается результат каждого ученика от среднего.
Я ХОЧУ ЭТО ПОНЯТЬ!
заранее спасибо
Mcduff вне форума Ответить с цитированием
Старый 24.04.2012, 16:39   #2
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Я для вас написал заготовку для решения вашей задачи. Эта программа загружает данные из файла (имена и оценки). Получается массив структур. Каждая структура - это ученик, а у ученика есть имя и оценка (члены структуры). Заранее извиняюсь за мой кривой английский.

Проверки выполняемые в программе:
- удачно ли открытие файла
- количество учеников не превышает заданного значения
- память для записи (ученика) выделена

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LENGTH_NAME 20
#define NSCHOOLCHILDREN 100

// запись: имя ученика и оценка
struct schoolchild {
    char name[LENGTH_NAME];
    int mark;
};

int main()
{
    int i, mark = 0;
    char name[LENGTH_NAME];

    // ученики
    struct schoolchild* sc[NSCHOOLCHILDREN];

    // имя файла
    char filename[] = "list.txt";

    // открываем файл
    FILE* fp = fopen (filename, "r");

    // проверка: удачно ли открытие файла
    if (fp == NULL) {
        fprintf(stderr, "error: can't open file \"%s\"\n", filename);
        return 1;
    }

    // загружаем входные данные из файла
    for (i = 0; fscanf(fp, "%s%d", name, &mark) != EOF; i++) {

        // проверка: количество учеников не превышает заданного значения
        if (i >= NSCHOOLCHILDREN) {
            fprintf(stderr, "error: number of schoolchildren great than %d\n", NSCHOOLCHILDREN);
            return 1;
        }

        // выделяем память для записи
        sc[i] = (struct schoolchild*) malloc(sizeof (struct schoolchild));

        // проверка: память для записи выделена
        if (sc == NULL) {
            fprintf(stderr, "error: can't allocate memory for record\n");
            return 1;
        }

        // сохраняем имя ученика
        strcpy(sc[i]->name, name);

        // сохраняем оценку ученика
        sc[i]->mark = mark;
    }

    fclose(fp);
    return 0;
}
P.S. Теперь можно думать, как дальше решать задачу. Данные для работы у нас загружены. Mcduff, предложите свой вариант решения (или развития) задачи и выкладывайте здесь.

Последний раз редактировалось 8Observer8; 24.04.2012 в 16:49.
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица сумма строк saix Общие вопросы C/C++ 0 20.02.2012 20:15
Сумма строк в StringGrid CallMeJammer Общие вопросы Delphi 4 14.05.2011 12:43
сумма строк элементов skiffter Общие вопросы C/C++ 1 16.10.2010 00:01
Сумма значений строк Deni55 Microsoft Office Excel 14 02.06.2009 13:56