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

Файлы - C++

Восстановить пароль Регистрация
 
Sydney
0 / 0 / 0
Регистрация: 22.05.2011
Сообщений: 5
23.05.2011, 16:02     Файлы #1
Помогите с этой программой в С++ плз, дело в том что перед практикой преподаватель не успел до конца рассказать как использовать файлы с их свойствами, поэтому я не могу разобраться в этой проге, которую нам дали, получилось что то типа самообучения. Помогите если есть желание плз.

Ввести з клавіатури дані про музейні експонати - назва, дата надходження, місце знаходження. Записати дані в файл (якщо файл вже існує-додати в кінець). Вивести на екран дані про експонати вказаного місця знаходження. Для вказаного експонату змінити місце знаходження.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 16:02     Файлы
Посмотрите здесь:

C++ Файлы
C++ Файлы
C++ Не читается txt-файл
Файлы.Текстовые файлы C++
C++ Файлы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.05.2011, 16:07     Файлы #2
Цитата Сообщение от Sydney Посмотреть сообщение
Ввести з клавіатури дані про музейні експонати - назва, дата надходження, місце знаходження. Записати дані в файл (якщо файл вже існує-додати в кінець). Вивести на екран дані про експонати вказаного місця знаходження. Для вказаного експонату змінити місце знаходження.
Щито?
Не все знают украинский, не все умеют пользоваться гугл транслейтом, и вообще, официальным языком форума является русский=\
Sydney
0 / 0 / 0
Регистрация: 22.05.2011
Сообщений: 5
23.05.2011, 17:06  [ТС]     Файлы #3
Извините.

Ввести с клавиатуры данные про музейные экспонаты - название, дата доставки, место обнаружения. Записать данные в файл ( если файл уже существует - добавить в конец ). Вывести на экран данные про экспонаты по указанному месту нахождения. Изменить место нахождения указанного экспоната. Как дополнительно могут потребовать меню.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.05.2011, 18:39     Файлы #4
Как-то так.
Просто сделать не получилось, и писал скорее для себя... В общем вот, вроде все прокоментил
Если будут вопросы по коду-задавай
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:~$
Sydney
0 / 0 / 0
Регистрация: 22.05.2011
Сообщений: 5
23.05.2011, 19:20  [ТС]     Файлы #5
Спасибо большое, пошел разбираться.
Yandex
Объявления
23.05.2011, 19:20     Файлы
Ответ Создать тему
Опции темы

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