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

Файлы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ консольная программа с выводом меню http://www.cyberforum.ru/cpp-beginners/thread302802.html
Написати програму, яка виводить на екран меню: 1. Запис чисел у файл 2. Пошук у файлі найменшого числа і його порядкового номера 3. Виведення на екран вмісту файлу 4. Вихід з програми Програма працює в циклі і продовжує роботу поки не буде обрано пункт меню 4. При виборі 1 пункту меню відбувається запис введених з клавіатури чисел у файл з ім’ям sourcemin.txt у режимі доповнення. При виборі...
C++ Самопроизвольное обнуление константы Добрый день! ... const std::clock_t start = std::clock(); int res = insertionSort(p,N); const double end = static_cast<double>(std::clock() - start) / CLOCKS_PER_SEC; ... std::cout<<"\n"<<end<<"\n"; ... http://www.cyberforum.ru/cpp-beginners/thread302777.html
функция C++
даны действительные числа A1, ... , An, B1, ... , Bn. в последовательности А1, А2, ... , Аn все члены, следующие за членом с наибольшим значением(за первым по порядку, если их несколько), заменить на 1, а в последовательности В1, ... , Bn - на 10
C++ глобальные переменные в модуле
Нужно сохранить пару массивов и несколько переменных, но так чтобы их в основной программе видно не было, хочу сделать статик внутри модуля, но так как переменные не малочатся, то не понимаю их время жизни. Итак, сколько живут глобальные переменные в модуле?
C++ Выполнение программы простой структуры http://www.cyberforum.ru/cpp-beginners/thread302760.html
Для задачи записать выражение, зависящее от координат точки X1 и Y1 и принимающее значение TRUE, если точка принадлежит заштрихованной области, и FALSE, если не принадлежит. Составить систему тестов и вычислить полученное выражение для нескольких точек, принадлежащих и не принадлежащих заштрихованной области.. ОЧЕНЬ СРОЧНО!!! ПОМОГИТЕ!!!! 2 задачки сделал, осталась эта и Отчет...
C++ Чтение из бинарного файла Нужно прочитать и вывести из двоичного файла (содержит натуральные числа) каждое 5 число. Можно ли считать подобным образом? ... rewind(input); fread(&num,5*sizeof(num),1,input); cout<<num; while(!feof(input)) { подробнее

Показать сообщение отдельно
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.05.2011, 18:39     Файлы
Как-то так.
Просто сделать не получилось, и писал скорее для себя... В общем вот, вроде все прокоментил
Если будут вопросы по коду-задавай
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
#include <iostream>
#include <fstream>
#include <sstream> //STL
struct exhibition{   //структура "экспонат"
    std::string name,date,place;  //имя, дата, место
};
int i; //i=0, если объявлять ее в глобальном пространстве
int main(){
    const int n=100;  //максимальный размер массива
    exhibition ex,array[n];   //структура, массив структур
    std::string place;   //STL-контейнер, место
    std::cout << "Enter exhibitions\n"; //"Введите экспонаты"
    for (;;){ //вечный цикл
        std::cin >> ex.name;
        if (ex.name=="end") break; //если первое введенное слово="end", то прерываем цикл(заканчиваем ввод)
        std::cin >> ex.date >> ex.place; //считываем дату и место
        array[i++]=ex;  //загоняем считанную структур в массив структур и постфиксно увеличиваем индекс i
    }
    size_t array_size=i; //тут будет лежать размер массива
    for(;;){//еще один вечный цикл
        std::cout << "Enter place\n";  //"введите место"
        std::cin >> place; //считываем "место"
        if (place=="end") break; //если введено "end", прерываем цикл(ввод места)
        bool isfound=false; //логическая переменная
        for ( i=0;i < array_size; i++) //пробегаемся по массиву
            if (array[i].place==place) { //если если элемент массива с индексом i равен введенному месту
                isfound=true; //присваиваем булевой переменной true
                break; //и прерываем цикл
            }
        if (!isfound)   //если экспонат с таким именем не найден
            std::cout << "Exhibition not found\n"; //"экспонат не найден"
        else{ //а если найден
        std::cout << "name: " << array[i].name << " date: " << array[i].date << " place: " << array[i].place << std::endl; //выводим информацию о экспонате
        std::cout << "\nEnter new place:\n"; //Введите новое место
        std::cin >> place; //считываем место
        array[i].place=place; //меняем место экспоната
        }
    }
    std::fstream out;   //файл
    out.open ("test.txt",std::fstream::out | std::fstream::app); // связываем out с нужным файлом
    for (i=0;i < array_size; i++) 
        out << array[i].name << ' ' << array[i].date << ' ' << array[i].place << std::endl; //и записываем все это в файл=)
    return 0; //happy end
}
Добавлено через 5 минут
Пример использования в консоли линукса
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
diagon@shadeware:~$ g++ main.cpp -o exhibition
diagon@shadeware:~$ ./exhibition
Enter exhibitions
exhibition1 21.05.2010 Paris
exhibition2 17:00 Moscow
exhibition3 date_not_found NamelessCity
end
Enter place
Moscow
name: exhibition2 date: 17:00 place: Moscow
 
Enter new place:
Krasnoyarsk
Enter place
Paris
name: exhibition1 date: 21.05.2010 place: Paris
 
Enter new place:
London
Enter place
end
diagon@shadeware:~$ cat ./test.txt
exhibition1 21.05.2010 London
exhibition2 17:00 Krasnoyarsk
exhibition3 date_not_found NamelessCity
diagon@shadeware:~$
 
Текущее время: 07:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru