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

Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
zewer
 Аватар для zewer
1038 / 729 / 72
Регистрация: 07.01.2011
Сообщений: 5,483
23.03.2011, 00:57     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #1
Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию. Следует предусмотреть возможность выбора пользователем режима работы: добавление или отображение данных. Обеспечить хранение данных в файле в виде структурированной таблицы, для этого следует использовать средства форматирования.
Из клавиатуры вводится название товара и его цена
Мое решение, но програма видает ошибку, помогите исправить
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
#include <iostream>
#include <fstream>
#include <iomanip>
 
using namespace std;
 
struct List
{
    char object[20];
    float price;
};
 
void main()
{
    int z;
    unsigned n;
    List *countObjects;
 
    setlocale (0,"");
    cout << "\nВведiть 1 для вводу даних, або 2 - для читання: ";
    cin >> z;
    if (z==1)
    {
        cout << "\nВведіть кількість товару : ";
    cin >> n;
    
    countObjects = new List [n];
 
    ofstream file ("D:\\input.txt", ios::out);
 
    cout << "Введiть кількість та ціну товару: \n";
 
    for (int i=0; i<n;i++)
    {
        cin >> countObjects->object;
        cin >> countObjects->price;
        file << "\n" << setw(15) << countObjects->object << setw (8) << countObjects->price;
    }
 
    file.close ();
 
    ifstream file_in ("D:\\input.txt", ios::in);
 
    if (!file_in)
    {
        cerr<<"\n\tНеможливо вiдкрити файл ... "<<endl;
        exit(1);
    }
    else
    {
        cout << "\n\nЗчитанi данi з файлу ... \n";
        while(!file_in.eof())
        {
            file_in >> countObjects->object;
            file_in >> countObjects->price;
 
            cout << "\n" << setw (10) <<countObjects->object;
            cout << setw (6) << countObjects->price;
        }
    }
    cout << "\n\n";
    }
    if (z==2)
    {
    countObjects = new List [0];
        ifstream file_in ("D:\\input.txt", ios::in);
    {
        cout << "\n\nЗчитанi данi з файлу ... \n";
        file_in >> countObjects->object;
            file_in >> countObjects->price;
 
            cout << "\n" << setw (10) <<countObjects->object;
            cout << setw (6) << countObjects->price;
    }
    }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2011, 00:57     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию
Посмотрите здесь:

C++ Написать программу, которая будет подсчитывать количество гласных букв в строке, введенной с клавиатуры.
C++ Напишите программу, которая будет определять размер для данных (int, char, long, double, short, unsigned, float) и выводить информацию
C++ Нужно написать функцию, которая формирует текстовый файл из звездочек
Программа, которая бы записывала в текстовый файл информацию о всех пакетах, проходящих через сетевую карту C++
C++ Написать программу , которая считывает текст из файла и записывает в другой файл только предложения , не содержащие заданное с клавиатуры слово можешь
Написать программу которая будет разделять число C++
Написать программу, которая по указанному в качестве параметра в командной строке файлу создаёт текстовый файл, содержащий листинг исходного файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7934 / 4716 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
23.03.2011, 03:03     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #2
zewer, Ошибку должны угадать?
rrrFer
Заблокирован
23.03.2011, 07:14     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #3
ForEveR, если экстрасенсорных способностей не хватает - нужно попробовать скомпилировать самостоятельно, кому надо-то в конце концов? ))
zewer,
C++
1
2
3
4
5
 List *countObjects;
 countObjects = new List [n];
 for (int i=0; i<n;i++)
        {
                cin >> countObjects->object;
что-то тут не так )) Читайте о работе с массивами

Добавлено через 2 минуты
и тут тоже:
C++
1
2
3
if (z==2)
        {
        countObjects = new List [0];
и еще прочитайте про delete

Добавлено через 10 минут
отформатируйте код - читать не возможно.
лучше (2==z).
C++
1
2
3
4
5
6
7
if (!file_in)
        {
                cerr<<"\n\tНеможливо вiдкрити файл ... "<<endl;
                exit(1);
        }
        else
        {
else{ можно удалить

Добавлено через 58 секунд
C++
1
ifstream file_in ("D:\\input.txt", ios::in);
закрыть поток забыли
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2011, 12:08     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #4
Цитата Сообщение от rrrFer Посмотреть сообщение
закрыть поток забыли
Этого можно не делать самостоятельно, ведь в деструкторе стримовых типов вызывается close.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
23.03.2011, 14:00     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #5
Цитата Сообщение от silent_1991 Посмотреть сообщение
Этого можно не делать самостоятельно, ведь в деструкторе стримовых типов вызывается close.
В умной книжке читал, что лучше всё-таки закрывать файл сразу, как только он перестанет быть нужен в открытом виде. Что бы там потом ни вызывалось, через несколько строк после прочтения (гораздо хуже, если записи) файла программа вполне может грохнуться, да так что файл открытым останется, при чём из-за кривости NTFS удалить такой файл получится разве что с помощью какой-нибудь утилиты вроде Unlocker... Мало того, думаю - в принципе правильно освобождать ресурсы сразу после использования. Это в Си-Диез они сами освободятся когда-нибудь...
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2011, 14:48     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #6
easybudda, ни сколько и не спорю, и сам всегда так делаю (хотя бы потому, что, например, считав из файла в самом начале программы данные и больше никаким боком к этому файлу не обращаясь, мы расходуем впустую ресурсы), моё высказывание заключалось в том, что, чисто теоретически, не закрыть файл - это не то же самое, что, например, не вернуть выделенный блок памяти в кучу.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
23.03.2011, 14:53     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #7
Цитата Сообщение от silent_1991 Посмотреть сообщение
не закрыть файл - это не то же самое, что, например, не вернуть выделенный блок памяти в кучу.
Конечно не то же самое. Вот только кроме предела памяти, которую может получить приложение (и всю её израсходовать в результате утечки) есть и предел количества одновременно открытых файлов, которого в принципе достичь тоже не трудно...
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2011, 15:03     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #8
Цитата Сообщение от easybudda Посмотреть сообщение
есть и предел количества одновременно открытых файлов, которого в принципе достичь тоже не трудно
Мда, я как-то не думал об этом в таком ключе)))
zewer
 Аватар для zewer
1038 / 729 / 72
Регистрация: 07.01.2011
Сообщений: 5,483
23.03.2011, 23:57  [ТС]     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #9
поисправлял ошибки, но компилятор видает такую ошибку:
Error 1 error LNK1168: cannot open D:\Visyal studio\laba 2\Debug\laba 2.exe for writing D:\Visyal studio\laba 2\laba 2\LINK laba 2
код програми:
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
#include <iostream>
#include <fstream>
#include <iomanip>
 
using namespace std;
 
struct List
{
    char object[20];
    float price;
};
 
void main()
{
    int z, n;
    
    List *countObjects;
 
    setlocale (0,"");
    cout << "\nВведiть 1 для вводу даних, або 2 - для читання: ";
    cin >> z;
    if (z==1)
    {
        cout << "\nВведіть кількість товару : ";
    cin >> n;
    
    countObjects = new List [n];
 
    ofstream file ("D:\\input.txt", ios::out);
 
    cout << "Введiть кількість та ціну товару: \n";
 
    for (int i=0; i<n;i++)
    {
        cin >> countObjects->object;
        cin >> countObjects->price;
        file << "\n" << setw(15) << countObjects->object << setw (8) << countObjects->price;
    }
 
 
    ifstream file_in ("D:\\input.txt", ios::in);
 
    if (!file_in)
    {
        cerr<<"\n\tНеможливо вiдкрити файл ... "<<endl;
        exit(1);
    }
    
    cout << "\n\n";
    }
    if (2==z)
    {
    countObjects = new List [0];
        ifstream file_in ("D:\\input.txt", ios::in);
    {
        cout << "\n\nЗчитанi данi з файлу ... \n";
        file_in >> countObjects->object;
            file_in >> countObjects->price;
 
            cout << "\n" << setw (10) <<countObjects->object;
            cout << setw (6) << countObjects->price;
    }
    delete countObjects;
    }
    }
Добавлено через 14 минут
предидущую ошибку исправил, но когда при виборе 1 или 2(тоесть введение или чтение), на 1 все норм, а на 2 вибивает следующая ошибка:
Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию

Добавлено через 15 секунд
код програми тотже

 Комментарий модератора 
Присоединяйте картинки к сообщениям. И старайтесь всё-таки по-русски писать. Слово "программы" пишется с двумя "м" и буквой "ы".
rrrFer
Заблокирован
24.03.2011, 05:29     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #10
C++
1
2
3
countObjects = new List [n];
//...
cin >> countObjects[i].object;
C++
1
2
countObjects = new List [0]; 
countObjects = new List;//попробуй так
zewer
 Аватар для zewer
1038 / 729 / 72
Регистрация: 07.01.2011
Сообщений: 5,483
24.03.2011, 16:01  [ТС]     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #11
Цитата Сообщение от rrrFer Посмотреть сообщение
C++
1
2
3
countObjects = new List [n];
//...
cin >> countObjects[i].object;
C++
1
2
countObjects = new List [0]; 
countObjects = new List;//попробуй так
ошибку исправил ище вчера))))
проблема била(у меня нету рус роскладки, поетому рус "ы" я не могу писать, а держать в буфере не вариант xD) у
C++
1
countObjects = new List [0];
сдесь я сменил на
C++
1
countObjects = new List [100];
и все окей)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2011, 02:11     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию
Еще ссылки по теме:

Программа, которая копировала бы строку, введенную пользователем с клавиатуры в новую C++
написать программу, которая. Будет создавать текстовый файл и отобразить его содержимое C++
C++ Написать программу, которая будет добавлять в текстовый файл введенную с клавиатуры информацию.З клавиатуры вводится имя компании, год основания
C++ Написать программу, которая будет зеркально выводить введенную строку
C++ Написать программу, которая будет переворачивать одномерный массив из 12 элементов, введенных с клавиатуры

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

Или воспользуйтесь поиском по форуму:
zewer
 Аватар для zewer
1038 / 729 / 72
Регистрация: 07.01.2011
Сообщений: 5,483
06.04.2011, 02:11  [ТС]     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию #12
не могу никак исправить 1 ошибку:
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
#include <iostream>
#include <fstream>
#include <iomanip>
 
using namespace std;
 
struct List
{
    char object[20];
    float price;
};
 
void main()
{
    int z;
    unsigned n;
    List *countObjects;
    countObjects = new List[1];
 
    setlocale (0,"");
    cout << "\nВведiть 1 для вводу даних, або 2 - для читання: ";
    cin >> z;
    if (z==1)
    {
        cout << "\nВведіть кількість товару : ";
    cin >> n;
 
    ofstream file ("D:\\input.txt", ios::app);
 
    cout << "Введiть кількість та ціну товару: \n";
 
    for (int i=0; i<n;i++)
    {
        cin >> countObjects->object;
        cin >> countObjects->price;
        file << "\n" << setw(15) << countObjects->object << setw (8) << countObjects->price;
    }
 
    file.close ();
 
    ifstream file_in ("D:\\input.txt", ios::in);
 
    if (!file_in)
    {
        cerr<<"\n\tНеможливо вiдкрити файл ... "<<endl;
        exit(1);
    }
    else
    {
        cout << "\n\nЗчитанi данi з файлу ... \n";
        while(!file_in.eof())
        {
            file_in >> countObjects->object;
            file_in >> countObjects->price;
 
            cout << "\n" << setw (10) <<countObjects->object;
            cout << setw (6) << countObjects->price;
        }
    }
    cout << "\n\n";
    }
    if (z==2)
    {
        ifstream file_in ("D:\\input.txt", ios::in);
    {
        cout.precision(10);
        cout << "\n\nЗчитанi данi з файлу ... \n";
        file_in >> countObjects->object;
            file_in >> countObjects->price;
 
            cout << "\n" << setw (15) <<countObjects->object;
            cout << setw (10) << countObjects->price << endl;
    }
    }
delete countObjects;    
}
ошибку видно, если со старта не вводить 1 а потом 2, а сразу ввести 2, числа виведут не те, что у файле а левие, немогу понять почему так, смотрел через дебуг, ничего такого не увидел, проблема именно сдесь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (z==2)
    {
        ifstream file_in ("D:\\input.txt", ios::in);
    {
        cout.precision(10);
        cout << "\n\nЗчитанi данi з файлу ... \n";
        file_in >> countObjects->object;
            file_in >> countObjects->price;
 
            cout << "\n" << setw (15) <<countObjects->object;
            cout << setw (10) << countObjects->price << endl;
    }
    }
delete countObjects;    
}
помогите плс
Yandex
Объявления
06.04.2011, 02:11     Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию
Ответ Создать тему
Опции темы

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