Форум программистов, компьютерный форум CyberForum.ru

Запись оценок и имен в отдельные переменные - C++

Восстановить пароль Регистрация
 
Choco
 Аватар для Choco
0 / 0 / 0
Регистрация: 17.12.2013
Сообщений: 13
02.02.2014, 23:55     Запись оценок и имен в отдельные переменные #1
Задача состоит в следующем - мы имеем файл с данными вида

Иванов Иван
6; 8; 4; 7; 5; 8; 3
Казаков Аристарх
6; 8; 4; 7; 5; 8; 3
Васин Евграф
6; 8; 4; 7; 5; 8; 3
Криворуков Евлампий
6; 8; 4; 7; 5; 8; 3
...

То есть информацию по успеваемости за модуль произвольного числа студентов. Ну для наглядности пусть их будет человек 10.

В задаче определяем структуру "студент"

const unsigned int mlen = 30;

struct Student { // определение типа Student

char name[mlen]; // имя студента

double grade; // средний балл

unsigned int fail; // задолженности (число)

};
1) считать информацию из файла (выполнить в отдельной функции)
2) для каждого студента посчитать средний балл и количество незачетов (две функции)
3) вывести аккуратно оформленную информацию по средним баллам и незачетам (с указанием информации о студентах на отчисление при 3+ незачетах) - также в отдельной функции (балл выводится в виде вещественного числа с двумя знаками после запятой).

Получилось считать из файла и вывести на экран, а как посчитать средний балл и количество незачетов?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <iomanip>
using namespace std;
const unsigned int mlen=30;
struct Student
{ // определение типа Student
char name[mlen]; // имя студента
int mark1, mark2, mark3, mark4, mark5, mark6, mark7;
double grade; // средний балл
unsigned int fail; // задолженности (число)
float first, second, third, forth, fifth, sixth, seventh;
};
 
void ReadFile()
{
FILE *file;
struct Student st;
file = fopen("C:\\Users\\User\\Documents\\Уроки\\Информатика\\Студент\\Студенты.txt", "r");
if (!file)
exit(1);
 
fclose(file);
}
int main()
{
setlocale(LC_ALL, "");
ReadFile();
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 23:55     Запись оценок и имен в отдельные переменные
Посмотрите здесь:

Переменные,значение функции,вспомогательные переменные. C++
C++ Определить количество неудолетворительных оценок
C++ Создать бинарное дерево, по правой ветке - переменные типа инт, по левой - 2 переменные типа чар
Считывание из бинарного файла и запись данных в две строковых переменные C++
C++ Использование имен предопределенных объектов в качестве имен переменных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fene4ka_
84 / 84 / 16
Регистрация: 24.01.2014
Сообщений: 1,142
03.02.2014, 02:23     Запись оценок и имен в отдельные переменные #2
ну у вас есть элемент структуры с оценками, суммируете их всех и делите на кол-во, это средний балл, дальше делайте переменную, которая будет считать кол-во незачетов, т.е. берете каждый бал и смотрите выше тройки он или нет, если не выше - добавляете незачет, потом смотрите, если кол-во незачетов больше трех, тогда выгоняете этого чувака в армию ...
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
03.02.2014, 07:36     Запись оценок и имен в отдельные переменные #3
Цитата Сообщение от Choco Посмотреть сообщение
Получилось считать из файла и вывести на экран
где это в коде? не вижу. там файл просто окрытается на чтение и тут же закрывается.

есть функция fscanf которой можно вытащить оценки из строки "6; 8; 4; 7; 5; 8; 3" в переменные так:
C++
1
fscanf(file, "%d; %d; %d; %d; %d; %d; %d", &mark1, &mark2, &mark3, &mark4, &mark5, &mark6, &mark7);
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
03.02.2014, 08:17     Запись оценок и имен в отдельные переменные #4
Choco, вы уверенны, что получилось считать? Потому что в этом коде ничего подобного нет
Choco
 Аватар для Choco
0 / 0 / 0
Регистрация: 17.12.2013
Сообщений: 13
04.02.2014, 21:42  [ТС]     Запись оценок и имен в отдельные переменные #5
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <iomanip>
using namespace std;
const unsigned int mlen=30;
struct Student
{ // определение типа Student
char name[mlen]; // имя студента
int mark1, mark2, mark3, mark4, mark5, mark6, mark7; //всего 7 оценок
double grade; // средний балл
unsigned int fail; // задолженности (число)
};
 
void ReadFile()
{
    char name[mlen];
        fstream file("C:\\Users\\User\\Documents\\Уроки\\Информатика\\Студент\\Студенты.txt");
        struct Student st;
        if (!file)
        exit(1);
        while(file>>name)
       {
       cout<<name;
       }
}
int main()
{
setlocale(LC_ALL, "");
ReadFile();
system("pause");
return 0;
}
Вы правы:
// Список студентов.cpp: главный файл проекта.



Список студентов выводится на экран, но без пробелов и пропусков

Добавлено через 2 минуты
Цитата Сообщение от AntonChik Посмотреть сообщение
есть функция fscanf которой можно вытащить оценки из строки "6; 8; 4; 7; 5; 8; 3" в переменные так:
C++
1
fscanf(file, "%d; %d; %d; %d; %d; %d; %d", &mark1, &mark2, &mark3, &mark4, &mark5, &mark6, &mark7);
показывает ошибку: 1>Список студентов.cpp(34): error C2065: mark1(до mark7): необъявленный идентификатор
Yandex
Объявления
04.02.2014, 21:42     Запись оценок и имен в отдельные переменные
Ответ Создать тему
Опции темы

Текущее время: 18:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru