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

Как сделать запись данных из файла в массив по условию для программы тестирования? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа ввода вывода массивов http://www.cyberforum.ru/cpp-beginners/thread1768132.html
Программа ввода\вывода массивов. Вводишь 10 элементов массива, далее программа выводит в столбец эти элементы. Строка 17.цикл while выполняется при условии, что ввод элемента массива не успешен(например, введена буква). Тогда вам нужно ввести ввести значение i-ого элемента массива ещё раз. В чём заключается ошибка: когда вводишь набор букв(kfjdk), то цикл работает. А когда вводишь сначала число а...
C++ Как этот массив переделать в статический? #include <stdlib.h> //для system #include <stdio.h> //для fscanf #include <iostream> //для cout #include <iomanip> //для setw using namespace std; int N; //Строк int M; //Столбцов int ** A; //Матрица int n; http://www.cyberforum.ru/cpp-beginners/thread1768121.html
C++ Сброс буфера вывода
Здравствуйте.Изучаю библиотеку ввода и вывода, познакомился тремя способами сброса буфера: endl, flush, ends. Могли бы вы привести примеры,в каких случаях нужно(лучше,правильнее) использовать определённый манипулятор?(Чем отличаются знаю) P.S.Манипулятор ends по идее должен вывести ещё и нулевой символ,но у меня просто пробел, так и должно быть?
Реализация ispunct при использовании потоков C++
Дана программа-переводчик с англ. на русский. Проблема в том, что при вводе текста со знаками препинания или с регистром не считывается перевод. Как реализовать ispunct при использовании в программе потоков? Или стоит другую функцию реализовать? Прошу вас о помощи. Спасибо за понимание
C++ Функция поиска в массиве, количества элементов подходящих условию http://www.cyberforum.ru/cpp-beginners/thread1768009.html
Подскажите пожалуйста, почему при компиляции прекращается работа программы, в чем ошибка? #include <iostream> #include <cmath> #include <cstdlib> #include <math.h> using namespace std; void f(); int main( ){ f();
C++ Дописать функцию удаления по заданному ключу для списка Ребят, нужно чуть дописать, весь мозг сломал:wall: #include <iostream> #include <iomanip> #include <Tchar.h> #include <locale.h> #include <conio.h> #include <string.h> using namespace std; // переменные struct muz { подробнее

Показать сообщение отдельно
Krock21rus
73 / 73 / 19
Регистрация: 18.11.2013
Сообщений: 369
Завершенные тесты: 2
24.06.2016, 23:55     Как сделать запись данных из файла в массив по условию для программы тестирования?
считать количество тестов по пустым строчкам как-то не верно

предлагаю считывать до конца файла\потока, или до спец. символа
считывая очередную строчку, определим её тип
если это вопрос, то значит начинается новый вопрос и мы готовимся принимать ответы на него
если это ответ, то к последнему вопросу добавляем его

сейчас попробую написать

Добавлено через 16 минут
как-то так
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
#include <bits/stdc++.h>
#include <vector>
#include <pair>
#include <string>
#include <iostream>
using namespace std;
 
struct quest
{
    string question;
    vector<pair<bool, string> > answers;//первый параметр - правда ли, что ответ правильный?
 
    quest() : question("")
    { };
};
 
void run()
{
    vector<quest> mas;
    char cquest = '@';
    char ctrueans = '*';
    while (!cin.eof() && !cin.fail())
    {
        string s;
        if (getline(cin, s)) // если удалось считать
        {
            bool isgood = false;
            for (int i=0; i < s.size(); i++)
            {
                if (isalnum(s[i]))// буква или цифра
                    isgood = true;
            }
            if (isgood) // если не пустая строчка
            {
                if (s[0] == cquest)// вопрос
                {
                    s = s.substr(1, s.size() - 1);
                    mas.push_back(quest());
                    mas[mas.size() - 1].question = s;
                }
                else if (s[0] == ctrueans)// правильный ответ
                {
                    if(mas.empty())continue;
                    s = s.substr(1, s.size() - 1);
                    mas[mas.size() - 1].answers.push_back(make_pair(1, s));
                }
                else// просто ответ
                {
                    if(mas.empty())continue;
                    mas[mas.size() - 1].answers.push_back(make_pair(0, s));
                }
            }
        }
    }
    // вывод всего
    for (int i = 0; i < mas.size(); i++)
    {
        cout << i+1 << ": " << mas[i].question << endl;
        for (int j = 0; j < mas[i].answers.size(); j++)
        {
            cout << setw(5);
            cout << j+1 << ". " << mas[i].answers[j].second << endl;
        }
        cout << endl;
    }
    system("pause");
}
Добавлено через 23 секунды
для окончания ввода в консоли нажать Ctrl + Z
 
Текущее время: 16:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru