Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/30: Рейтинг темы: голосов - 30, средняя оценка - 4.53
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342

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

23.03.2011, 00:57. Показов 5789. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию. Следует предусмотреть возможность выбора пользователем режима работы: добавление или отображение данных. Обеспечить хранение данных в файле в виде структурированной таблицы, для этого следует использовать средства форматирования.
Из клавиатуры вводится название товара и его цена
Мое решение, но програма видает ошибку, помогите исправить
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;
    }
    }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.03.2011, 00:57
Ответы с готовыми решениями:

Написать программу, которая будет добавлять в текстовый файл введенную с клавиатуры информацию.З клавиатуры вводится имя компании, год основания
Help

написать программу, которая. Будет создавать текстовый файл и отобразить его содержимое
написать программу, которая. Будет создавать текстовый файл и отобразить его содержимое.

Написать программу, которая будет зеркально выводить введенную строку
Доброго времени суток! Стоит задача: написать программу, которая будет зеркально выводить введенную строку. Условие: нельзя...

11
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
23.03.2011, 03:03
zewer, Ошибку должны угадать?
0
Заблокирован
23.03.2011, 07:14
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);
закрыть поток забыли
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
23.03.2011, 12:08
Цитата Сообщение от rrrFer Посмотреть сообщение
закрыть поток забыли
Этого можно не делать самостоятельно, ведь в деструкторе стримовых типов вызывается close.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
23.03.2011, 14:00
Цитата Сообщение от silent_1991 Посмотреть сообщение
Этого можно не делать самостоятельно, ведь в деструкторе стримовых типов вызывается close.
В умной книжке читал, что лучше всё-таки закрывать файл сразу, как только он перестанет быть нужен в открытом виде. Что бы там потом ни вызывалось, через несколько строк после прочтения (гораздо хуже, если записи) файла программа вполне может грохнуться, да так что файл открытым останется, при чём из-за кривости NTFS удалить такой файл получится разве что с помощью какой-нибудь утилиты вроде Unlocker... Мало того, думаю - в принципе правильно освобождать ресурсы сразу после использования. Это в Си-Диез они сами освободятся когда-нибудь...
2
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
23.03.2011, 14:48
easybudda, ни сколько и не спорю, и сам всегда так делаю (хотя бы потому, что, например, считав из файла в самом начале программы данные и больше никаким боком к этому файлу не обращаясь, мы расходуем впустую ресурсы), моё высказывание заключалось в том, что, чисто теоретически, не закрыть файл - это не то же самое, что, например, не вернуть выделенный блок памяти в кучу.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
23.03.2011, 14:53
Цитата Сообщение от silent_1991 Посмотреть сообщение
не закрыть файл - это не то же самое, что, например, не вернуть выделенный блок памяти в кучу.
Конечно не то же самое. Вот только кроме предела памяти, которую может получить приложение (и всю её израсходовать в результате утечки) есть и предел количества одновременно открытых файлов, которого в принципе достичь тоже не трудно...
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
23.03.2011, 15:03
Цитата Сообщение от easybudda Посмотреть сообщение
есть и предел количества одновременно открытых файлов, которого в принципе достичь тоже не трудно
Мда, я как-то не думал об этом в таком ключе)))
0
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
23.03.2011, 23:57  [ТС]
поисправлял ошибки, но компилятор видает такую ошибку:
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 секунд
код програми тотже

 Комментарий модератора 
Присоединяйте картинки к сообщениям. И старайтесь всё-таки по-русски писать. Слово "программы" пишется с двумя "м" и буквой "ы".
0
Заблокирован
24.03.2011, 05:29
C++
1
2
3
countObjects = new List [n];
//...
cin >> countObjects[i].object;
C++
1
2
countObjects = new List [0]; 
countObjects = new List;//попробуй так
0
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
24.03.2011, 16:01  [ТС]
Цитата Сообщение от 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];
и все окей)
0
 Аватар для zewer
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
06.04.2011, 02:11  [ТС]
не могу никак исправить 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;    
}
помогите плс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.04.2011, 02:11
Помогаю со студенческими работами здесь

Написать программу, которая преобразует строку введенную с клавиатуры и состоящей из нескольких слов
Написать программу, которая преобразует строку введенную с клавиатуры и состоящей из нескольких слов, так что каждое слово записывается...

Написать программу которая определяет число n при котором сумма не превысит величину, введённую с клавиатуры
Написать программу которая определяет число n при котором сумма не превысит величину, введённую с клавиатуры, то есть, S&gt;k ГДЕ...

Написать программу, которая определяет число n, при котором сумма не превысит величину k, введенную с клавиатуры
Написать программу, которая определяет число n, при котором сумма не привысит велечину k введенную с клавиатуры то есть s&gt;k, где s=...

Сохранить введенную информацию в текстовый файл
Для профи этот вопрос может показаться достаточно тупым, в гугле не нашел ничего такого, поэтому решил спросить здесь. Например...

Написать программу, которая будет принимать значения, которые пользователь ввел в консоль и добавлять их в массив
Написать программу, которая будет принимать значения, которые пользователь ввел в консоль и добавлять их в массив. Остановкой служит 0.


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru