С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
zewer
1366 / 1055 / 111
Регистрация: 07.01.2011
Сообщений: 6,927
#1

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

23.03.2011, 00:57. Просмотров 1688. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2011, 00:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу, которая будет добавлять в текстовый файл введенную из клавиатуры информацию (C++):

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

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

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

Написать программу, которая будет переворачивать одномерный массив из 12 элементов, введенных с клавиатуры - C++
Друзья, пожалуйста решите задачу. Не разбираюсь вообще в языке с++, вообще ни капли, нужно чтобы эта программа работала в visual studio...

Написать программу, которая будет подсчитывать количество гласных букв в строке, введенной с клавиатуры. - C++
:wall: help

Написать программу, которая по указанному в качестве параметра в командной строке файлу создаёт текстовый файл, содержащий листинг исходного файла - C++
Очень нужно написать программу на c++, а я даже условие не до конца понимаю! Буду очень благодарен за помощь в написании! Она не должна...

11
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
23.03.2011, 03:03 #2
zewer, Ошибку должны угадать?
0
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);
закрыть поток забыли
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
23.03.2011, 12:08 #4
Цитата Сообщение от rrrFer Посмотреть сообщение
закрыть поток забыли
Этого можно не делать самостоятельно, ведь в деструкторе стримовых типов вызывается close.
1
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,867
23.03.2011, 14:00 #5
Цитата Сообщение от silent_1991 Посмотреть сообщение
Этого можно не делать самостоятельно, ведь в деструкторе стримовых типов вызывается close.
В умной книжке читал, что лучше всё-таки закрывать файл сразу, как только он перестанет быть нужен в открытом виде. Что бы там потом ни вызывалось, через несколько строк после прочтения (гораздо хуже, если записи) файла программа вполне может грохнуться, да так что файл открытым останется, при чём из-за кривости NTFS удалить такой файл получится разве что с помощью какой-нибудь утилиты вроде Unlocker... Мало того, думаю - в принципе правильно освобождать ресурсы сразу после использования. Это в Си-Диез они сами освободятся когда-нибудь...
2
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
23.03.2011, 14:48 #6
easybudda, ни сколько и не спорю, и сам всегда так делаю (хотя бы потому, что, например, считав из файла в самом начале программы данные и больше никаким боком к этому файлу не обращаясь, мы расходуем впустую ресурсы), моё высказывание заключалось в том, что, чисто теоретически, не закрыть файл - это не то же самое, что, например, не вернуть выделенный блок памяти в кучу.
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,867
23.03.2011, 14:53 #7
Цитата Сообщение от silent_1991 Посмотреть сообщение
не закрыть файл - это не то же самое, что, например, не вернуть выделенный блок памяти в кучу.
Конечно не то же самое. Вот только кроме предела памяти, которую может получить приложение (и всю её израсходовать в результате утечки) есть и предел количества одновременно открытых файлов, которого в принципе достичь тоже не трудно...
1
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
23.03.2011, 15:03 #8
Цитата Сообщение от easybudda Посмотреть сообщение
есть и предел количества одновременно открытых файлов, которого в принципе достичь тоже не трудно
Мда, я как-то не думал об этом в таком ключе)))
0
zewer
1366 / 1055 / 111
Регистрация: 07.01.2011
Сообщений: 6,927
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 секунд
код програми тотже

 Комментарий модератора 
Присоединяйте картинки к сообщениям. И старайтесь всё-таки по-русски писать. Слово "программы" пишется с двумя "м" и буквой "ы".
0
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;//попробуй так
0
zewer
1366 / 1055 / 111
Регистрация: 07.01.2011
Сообщений: 6,927
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];
и все окей)
0
zewer
1366 / 1055 / 111
Регистрация: 07.01.2011
Сообщений: 6,927
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;    
}
помогите плс
0
06.04.2011, 02:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2011, 02:11
Привет! Вот еще темы с ответами:

Написать программу , которая считывает текст из файла и записывает в другой файл только предложения , не содержащие заданное с клавиатуры слово можешь - C++
Написать программу , которая считывает текст из файла и записывает в другой файл только предложения , не содержащие заданное с клавиатуры...

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

нужно написать функцию, которая будет считать квадратное уравнение, данные с клавиатуры ввожу - C++
#include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using std::cout; using std::endl; using std::cin; int a, b, c,...

Программа, которая копировала бы строку, введенную пользователем с клавиатуры в новую - C++
Написать программу, которая копировала бы строку, введенную пользователем с клавиатуры в новую (максимальная длина строки - 130 символов)....


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.