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

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

23.03.2011, 00:57. Показов 5706. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru