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

Вывести несколько строк в файл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создайте общий массив, из данного массива и точно такого же но другого размера, и отсортируйте по уменьшению. http://www.cyberforum.ru/cpp-beginners/thread443580.html
Создайте общий массив, из данного массива и точно такого же но другого размера, и отсортируйте по уменьшению.
C++ Определите сумму элементов массива, расположенных после элемента равного минимуму. Определите сумму элементов массива, расположенных после элемента равного минимуму. http://www.cyberforum.ru/cpp-beginners/thread443578.html
C++ Отсортируйте элементы массива по возрастанию их модуля
Отсортируйте элементы массива по возрастанию их модуля
Определите количество элементов массива равных нулю. C++
1. Определите количество элементов массива равных нулю.
C++ Оператор switch http://www.cyberforum.ru/cpp-beginners/thread443574.html
Оператор switch: 1)Написать программу, где ожидается ввод символа с клавиатуры, после чего определяется, является ли этот символ буквой, цифрой или специальным символом. 2). Написать программу, которая ждет ввода буквы русского алфавита и в зависимости от этого определяет гласная или согласная. Если согласная, то звонкая или глухая. Помогите с решением))
C++ Какие компонентные функции отвечают за создание объекта? Какие компонентные функции отвечают за создание объекта? Такой вопрос, может кто ответить?:) я не могу найти нигде...:( подробнее

Показать сообщение отдельно
Johnlion
 Аватар для Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
09.02.2012, 19:35     Вывести несколько строк в файл
Условие Вывести несколько строк в файл
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
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstring>
 
const int N=100;
 
std :: ifstream input;
std :: ofstream output;
char name_input[130]="";            /* имя входного файла */
char name_output[130]="";           /* имя выходного файла */                           
void open_file(void);           /* прототип функции открытия файла */
 
/* ----------------------- входная структура ----------------------- */
struct vhod
{
    char name[50];
    float god_40;
    float god_50;
    float god_55;
    float god_58;
};
/* -------------------- выходная структура ------------------------- */
struct vyhod
{
    char name[50];
    float prirost;
} res;
/* -------------------- главная функция ---------------------------- */
void main(int argc, char *argv[])
{
    struct vhod table[N];
    float min;
 
    if(argc == 2)               /* если задано имя только входного файла */
    {                               
        strcpy(name_input, argv[1]);
    }
    if(argc >= 3)               /* если заданы имена и входного и выходного файлов */
    {                       
        strcpy(name_input, argv[1]);
        strcpy(name_output, argv[2]);
    }
    open_file();
 
/* ----------------- считывание входных данных из файла -------------- */
    int counter=0;            /* количество записей в таблице */
    while(!input.eof())
    {
        input >> table[counter].name >> table[counter].god_40 >> table[counter].god_50 >> table[counter].god_55 >> table[counter].god_58;
        counter++;
    }
    min = (table[0].god_55-table[0].god_40)*100/table[0].god_40;
    res.prirost = table[0].god_50-table[0].god_40;
    strcpy(res.name, table[0].name);
    for (int i=1; i<counter; i++)
    {
        if ((table[i].god_55-table[i].god_40)*100/table[i].god_40 < min)
        {
            min = (table[i].god_55-table[i].god_40)*100/table[i].god_40;
            res.prirost = table[i].god_50-table[i].god_40;
            strcpy(res.name, table[i].name);
        }
    }
 
/* --------------------------- вывод в файл -------------------------- */
    output << res.name << res.prirost;
 
    input.close();
    output.close();
}
 
void open_file(void)
{
    input.open(name_input);
    while (input.fail())
    {
        std :: cout << ("Vhod: "); //Введите имя входного файла
        std :: cin >> name_input;
        input.open(name_input);
    }
    
    output.open(name_output);
    while (output.fail())
    {
        std :: cout << ("\nVyhod: "); //Введите имя выходного файла
        std :: cin >> name_output;
        output.open(name_output);
    }
}
Программа работает нормально, но она выводит только одну строку в выходной файл. А если там будет 2 минимума (одинаковых), то выводит первый попавшийся. Как нужно изменить вывод в файл, чтобы выводило все минимумы построчно?

Кидаю входной файл для вывода одной строки и входной файл, из которого должно получиться 2 строки в выходном.
Вложения
Тип файла: txt ODNAstr.txt (284 байт, 7 просмотров)
Тип файла: txt DVEstr.txt (282 байт, 9 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru