С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 04.04.2021
Сообщений: 7
1

Работа с файлами, найти количество ребят, которые получили неуд

27.04.2021, 13:05. Показов 1892. Ответов 5

Author24 — интернет-сервис помощи студентам
Добрый день. Столкнулся с следующей проблемой:
Мне нужно найти количество ребят, которые получили неуд (хотя бы 1 двoйку)
Я решил реализовать через эдакий обменник, в виде второго файлика. Плюс ко всему, я сделал построчное считывание отметок со второго файлика. Но что-то у меня вышло криво. Помогите пожалуйста

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <Windows.h>
#define N 20
 
using namespace std;
struct Student
{
    char sname[20];
    char name[20];
    char mname[20];
    int math;
    int fiz;
    int cher;
    int him;
    int sopr;
}Man;
 
int main(void)
{
    setlocale(LC_ALL, "rus");
    int i, n;
    int count = 0;
    cout << "Введите количество студентов => ";
    cin  >> n;
    cout << "\n";
    ofstream file1("test1.txt");
    ofstream file2("test2.txt");
    for (i = 0; i < n; i++)
    {
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        cout << "Введите фамилию" << endl;
        scanf_s("\n");
        cin.getline(Man.sname, 20);
        cout << "Введите имя" << endl;
        cin.getline(Man.name, 20);
        cout << "Введите отчество" << endl;
        cin.getline(Man.mname, 20);
        cout << "Введите оценку по математике => ";
        cin  >> Man.math;
        cout << "Введите оценку по физике => ";
        cin  >> Man.fiz;
        cout << "Введите оценку по черчению => ";
        cin  >> Man.cher;
        cout << "Введите оценку по химии => ";
        cin  >> Man.him;
        cout << "Введите оценку по сопромату => ";
        cin  >> Man.sopr;
 
        file1 << "ФИО:" << " ";
        file1 << Man.sname << " ";
        file1 << Man.name  << " ";
        file1 << Man.mname << "\n";
        file1 << "Оценка по математике => ";
        file1 << Man.math << "\n";
        file1 << "Оценка по физике => ";
        file1 << Man.fiz << "\n";
        file1 << "Оценка по черчению => ";
        file1 << Man.cher << "\n";
        file1 << "Оценка по химии => ";
        file1 << Man.him << "\n"; 
        file1 << "Оценка по сопромату => ";
        file1 << Man.sopr << "\n";
        file2 << Man.math << " " << Man.fiz << " " << Man.cher << " " << Man.him << " " << Man.sopr << "\n";
        cout  << "____________________________________________________________________" << endl;
        file1 << "--------------------------------------------------------------------" << "\n";
    }
    file1.close();
    file2.close();
 
    FILE* t;
    char str[N];
    t = fopen("test2.txt", "r");
    while (fgets(str, N, t) != NULL)
    { 
        if (str[N] == '2')
        {
          count++;
        } break;
    }
 
    fclose(t);
 
    cout << "Количество студентов, получивших неуд => " << count << endl;
    if (count == 0)
        cout << "\n" << "Молодцы, экзамен сдали все! " << endl;
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2021, 13:05
Ответы с готовыми решениями:

Ребят,найти ошибку надо(работа с файлами)
в исходном текстовом файле записаны строки,содержащие текст на английском языке Требуется написать...

Работа с файлами. Найти количество четных, количество удвоенных нечетных чисел
всем доброго времени суток, помогите решить задачу в паскале условие Дан файл f, компоненты...

Найти учеников, которые не получили ни одной тройки
скажите пожалуйста в чем ошибка. запуталась. Нужно Распечатать фамилии тех учеников, которые не...

Найти и вывести фамилии тех студентов, которые на экзаменах получили не ниже 7 баллов
Даны оценки группы студентов на экзаменах по 4 предметам: алгебре, геометрии, философии,...

5
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.04.2021, 13:49 2
Используй ifstream и считывай по аналогии с записью (67).
0
0 / 0 / 0
Регистрация: 04.04.2021
Сообщений: 7
27.04.2021, 16:14  [ТС] 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <Windows.h>
 
using namespace std;
struct Student
{
    char sname[20];
    char name[20];
    char mname[20];
    int math;
    int fiz;
    int cher;
    int him;
    int sopr;
}Man;
 
int main(void)
{
    setlocale(LC_ALL, "rus");
    int i, n;
    char str[15];
    int count = 0;
    cout << "Введите количество студентов => ";
    cin >> n;
    cout << "\n";
    ofstream file1("test1.txt");
    ofstream file2("test2.txt");
    for (i = 0; i < n; i++)
    {
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        cout << "Введите фамилию" << endl;
        scanf_s("\n");
        cin.getline(Man.sname, 20);
        cout << "Введите имя" << endl;
        cin.getline(Man.name, 20);
        cout << "Введите отчество" << endl;
        cin.getline(Man.mname, 20);
        cout << "Введите оценку по математике => ";
        cin >> Man.math;
        cout << "Введите оценку по физике => ";
        cin >> Man.fiz;
        cout << "Введите оценку по черчению => ";
        cin >> Man.cher;
        cout << "Введите оценку по химии => ";
        cin >> Man.him;
        cout << "Введите оценку по сопромату => ";
        cin >> Man.sopr;
 
        file1 << "ФИО:" << " ";
        file1 << Man.sname << " ";
        file1 << Man.name << " ";
        file1 << Man.mname << "\n";
        file1 << "Оценка по математике => ";
        file1 << Man.math << "\n";
        file1 << "Оценка по физике => ";
        file1 << Man.fiz << "\n";
        file1 << "Оценка по черчению => ";
        file1 << Man.cher << "\n";
        file1 << "Оценка по химии => ";
        file1 << Man.him << "\n";
        file1 << "Оценка по сопромату => ";
        file1 << Man.sopr << "\n";
        file2 << Man.math << " " << Man.fiz << " " << Man.cher << " " << Man.him << " " << Man.sopr << "\n";
        cout << "____________________________________________________________________" << endl;
        file1 << "--------------------------------------------------------------------" << "\n";
    }
    file1.close();
    file2.close();
 
    ifstream read("test2.txt");
    for (int z=0; z<n; z++)
    { 
        read.getline(str, 15);
        if (str[z] = '2')
            {
            count++;
            
            }break;
    }
    read.close();
 
    cout << "Количество студентов, получивших неуд => " << count << endl;
    if (count == 0)
        cout << "\n" << "Молодцы, экзамен сдали все! " << endl;
    return 0;
}
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
27.04.2021, 19:00 4
Зачем там getline()? Считывай сразу числа. По 5 на студента или по одному. Как там надо.
C++
1
read >> x
1
0 / 0 / 0
Регистрация: 04.04.2021
Сообщений: 7
28.04.2021, 10:03  [ТС] 5
Попробовал я "read >> str"
Что-то count все ровно нормально не считает количество студентов. Может быть дело в массиве? Или в цикле?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
29.04.2021, 10:33 6
Лучший ответ Сообщение было отмечено Greeg как решение

Решение

str не число.
C++
1
2
3
4
5
6
7
8
int x;
 
for (int z=0; z<n; z++)
{ 
  for (int = 0; i < 5; ++i)
  {
    read >> x;
    if (x == 2)
1
29.04.2021, 10:33
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2021, 10:33
Помогаю со студенческими работами здесь

Найти фамилии студентов данной группы, которые получили максимальный балл (программа не запускается)
дана инф ввиде:ФИО,группа,балл. найти фамилии студентов данной группы,которые получили максимальный...

Работа с файлами. Найти общее количество его локальных экстремумов
Дан файл вещественных чисел. Найти общее количество его локальных экстремумов, т.е. локальных...

Работа с файлами. Найти число, повторяющееся максимальное количество раз
Создать файл из N целых чисел. Найти число, повторяющееся максимальное кол-во раз. Если таких чисел...

Работа с файлами: найти наибольшее количество кубиков одинакового размера
помогите плз зделать задание к сессии=) сам никак не могу разобраться че к чему с этими файлами=((...

Распечатать фамилии тех учеников, которые не получили ни одной тройки за последнюю четверть. Найти ошибку
Распечатать фамилии тех учеников, которые не получили ни одной тройки за последнюю четверть. В...

Работа с файлами: найти слово, содержащее максимальное количество введенных букв
Дано: текстовый файл, пользователем вводится буква. Найти: слово, содержащее наибольшее количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала согласования+ стартер fast регистров. Файлы прилагаю. . . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru