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

Работа с файлами. слова - C++

Восстановить пароль Регистрация
 
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
06.11.2012, 18:05     Работа с файлами. слова #1
Задание следующее. В существующем типизированном файле, элементами которого являются числа, изменить на заданное число 1 элемент, 5 элемент и K-тый элемент.
Новое значение вводится с клавиатуры. Что тут пишу неправильно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{ ifstream f("hw5file.txt");
 int a[100];
 int k,x;
 cin >> k >>x;
 int i=0;
 while (!f.eof())
 {f>>a[i];
  if (i==0) a[0]=x;
  if (i==4) a[4]=x;
  if (i==k) a[k]=x;
   i++;}
 
 ofstream g("hw5file.txt");
 int b;
 g<<b;

return 0;}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
06.11.2012, 18:37     Работа с файлами. слова #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
#include <iostream> 
#include <fstream>
 
int main() 
{  
    std::ifstream infile; 
    int array[100]; 
    int i = 0, j; 
    int k = 2;
    infile.open("Text.txt"); 
 
    if(!infile.is_open()) 
       std::cout << "Error " << std::endl; 
    else   
        while(infile >> array[i++]);  
    array[0] = 1; 
    array[4] = 1; 
    array[k] = 1; 
 
    std::ofstream outfile("ASD.txt"); 
    
    for ( j = 0; j < i - 1; j++) 
        outfile << array[j] << " ";  
    infile.close(); 
    outfile.close();
}
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
06.11.2012, 18:45  [ТС]     Работа с файлами. слова #3
Цитата Сообщение от David Sylva Посмотреть сообщение
Если правильно понял задание можно сделать так
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
#include <iostream> 
#include <fstream>
 
int main() 
{  
    std::ifstream infile; 
    int array[100]; 
    int i = 0, j; 
    int k = 2;
    infile.open("Text.txt"); 
 
    if(!infile.is_open()) 
       std::cout << "Error " << std::endl; 
    else   
        while(infile >> array[i++]);  
    array[0] = 1; 
    array[4] = 1; 
    array[k] = 1; 
 
    std::ofstream outfile("ASD.txt"); 
    
    for ( j = 0; j < i - 1; j++) 
        outfile << array[j] << " ";  
    infile.close(); 
    outfile.close();
}
А можно ли без всяких open() написать эту програмку, только с применением тех функций, которые указаны в моём коде?
У меня в текстовом файле даны следующие числа.
444
555
666
777
888
999
200
100
111
33
22
44
55

Соответственно нужно изменить в этом файле первый, пятый и какой нить K элемент.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
06.11.2012, 18:51     Работа с файлами. слова #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
#include <iostream> 
#include <fstream>
 
int main() 
{  
    std::ifstream infile("Text.txt"); 
    int array[100]; 
    int i = 0, j; 
    int k = 2;
   
    
    while(infile >> array[i++]);  
    array[0] = 1; 
    array[4] = 1; 
    array[k] = 1; 
 
    std::ofstream outfile("ASD.txt"); 
    
    for ( j = 0; j < i - 1; j++) 
        outfile << array[j] << " ";  
    infile.close(); 
    outfile.close();
}
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
07.11.2012, 17:37  [ТС]     Работа с файлами. слова #5
в типизированном существующем файле, элементами которого являются отдельные слова, изменить 1, 5, Kтый элемент на слово которое задаётся пользователем.
Я создал следующий txt файл.
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello

И написал следующий код чтобы изменить его. Но что-то неправильно, так как программа удаляет все слова в файле. Где тут ошибка?
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{  ifstream f("hw6file.txt");
  string a[100];
  string s;
 getline (cin,s);
 int i=0, k;
 cin >>k;
 
 while (!f.eof())
 {f>>a[i];
 a[0]=s;
 a[5]=s;
 a[k]=s; i++;}
 a[i]=s;
 
 ofstream g("hw6file.txt");
 int j=0;
 while (j>=i)
{g<<a[j]<< endl;j++;}
 
return 0;}
 Комментарий модератора 
Используйте тег вставки кода С++.
Устное предупреждение.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
07.11.2012, 18:10     Работа с файлами. слова #6
Предлагаю вот такой вариант
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
#include <iostream> 
#include <fstream> 
 
int main() 
{ 
    int k = 2;  
    int count = 0;
    char word[100]; 
    char str[100];
    std::ifstream infile;
    std::ofstream outfile("ASD.txt");
    infile.open("Text.txt"); 
 
    std::cout << "Inter word " << std::endl; 
    std::cin >> word;  
 
    if(!infile.is_open()) 
        std::cout << "Error " << std::endl; 
    else  
        while(infile >> str) 
        {  
            if(count == 0 || count == 5 || count == k) 
                strcpy(str, word);  
            outfile << str << std::endl; 
            count++;
        } 
        infile.close(); 
        outfile.close();
}
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
07.11.2012, 18:20  [ТС]     Работа с файлами. слова #7
Цитата Сообщение от David Sylva Посмотреть сообщение
Предлагаю вот такой вариант
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
#include <iostream> 
#include <fstream> 
 
int main() 
{ 
    int k = 2;  
    int count = 0;
    char word[100]; 
    char str[100];
    std::ifstream infile;
    std::ofstream outfile("ASD.txt");
    infile.open("Text.txt"); 
 
    std::cout << "Inter word " << std::endl; 
    std::cin >> word;  
 
    if(!infile.is_open()) 
        std::cout << "Error " << std::endl; 
    else  
        while(infile >> str) 
        {  
            if(count == 0 || count == 5 || count == k) 
                strcpy(str, word);  
            outfile << str << std::endl; 
            count++;
        } 
        infile.close(); 
        outfile.close();
}
А можно без всяких Char и infile is open и других strcpy функций? Я это всё не проходил ещё. Можно ли изменить в моём коде что-то минимально,чтобы сработало?
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
07.11.2012, 18:25     Работа с файлами. слова #8
Цитата Сообщение от Parilo Посмотреть сообщение
А можно без всяких Char и infile is open и других strcpy функций
Какой char тебя испугал я не понял? infile это объект класс, то же самое, что у тебя f, функция strcpy
стандартная функция работы со С строками, в любом учебнике она проходится в одной из первых глав.
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
07.11.2012, 18:53  [ТС]     Работа с файлами. слова #9
Цитата Сообщение от David Sylva Посмотреть сообщение
Какой char тебя испугал я не понял? infile это объект класс, то же самое, что у тебя f, функция strcpy
стандартная функция работы со С строками, в любом учебнике она проходится в одной из первых глав.
Какая разница между char and string?
получается как я пишу string это неправильно?
мой код поменять можно минимально так используя мои имена объектов и только те функции, которые у меня указаны, или невозможно без использования вашей стандартной функции работы со строками?

Добавлено через 18 минут
Цитата Сообщение от David Sylva Посмотреть сообщение
Какой char тебя испугал я не понял? infile это объект класс, то же самое, что у тебя f, функция strcpy
стандартная функция работы со С строками, в любом учебнике она проходится в одной из первых глав.

К сожалению, ваш код тоже не работает, файл пустой. Все значения удаляются почему то.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
07.11.2012, 18:56     Работа с файлами. слова #10
Цитата Сообщение от Parilo Посмотреть сообщение
мой код поменять можно минимально так используя мои имена объектов и только те функции, которые у меня указаны, или невозможно без использования вашей стандартной функции работы со строками?
Можно конечно.
Цитата Сообщение от Parilo Посмотреть сообщение
К сожалению, ваш код тоже не работает, файл пустой. Все значения удаляются почему то.
У меня все отлично работает
Parilo
14 / 2 / 0
Регистрация: 18.11.2011
Сообщений: 90
07.11.2012, 19:00  [ТС]     Работа с файлами. слова #11
Цитата Сообщение от Parilo Посмотреть сообщение
Какая разница между char and string?
получается как я пишу string это неправильно?
мой код поменять можно минимально так используя мои имена объектов и только те функции, которые у меня указаны, или невозможно без использования вашей стандартной функции работы со строками?

Добавлено через 18 минут



К сожалению, ваш код тоже не работает, файл пустой. Все значения удаляются почему то.

Я нашёл ошибку в своём коде. В последнем цикле я написал while (j>=i), а надо while (j<=i).
Надо было самому свой код проверить внимательно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 19:02     Работа с файлами. слова
Еще ссылки по теме:

C++ Работа со строчками (вывести в столбец все слова без повторений и количеством использования каждого слова)
Работа с файлами C++
Работа с файлами. Определить и напечатать слова минимальной длины C++

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

Или воспользуйтесь поиском по форуму:
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
07.11.2012, 19:02     Работа с файлами. слова #12
Цитата Сообщение от Parilo Посмотреть сообщение
Я нашёл ошибку в своём коде. В последнем цикле я написал while (j>=i), а надо while (j<=i).
Надо было самому свой код проверить внимательно.

Не по теме:

молодец

Yandex
Объявления
07.11.2012, 19:02     Работа с файлами. слова
Ответ Создать тему
Опции темы

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