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

Описать функцию, которая формирует текстовую строку - C++

Восстановить пароль Регистрация
 
polya
0 / 0 / 0
Регистрация: 27.05.2012
Сообщений: 26
02.09.2012, 23:16     Описать функцию, которая формирует текстовую строку #1
Дан текст в файле F1 в виде:
ИМЯ ОТЧЕСТВО ФАМИЛИЯ_1
ИМЯ ОТЧЕСТВО ФАМИЛИЯ_2
...
Описать функцию, которая формирует текстовую строку в формате:
ФАМИЛИЯ И.О.
Сохранить преобразованный текст в файле F2.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2012, 23:16     Описать функцию, которая формирует текстовую строку
Посмотрите здесь:

C++ Описать функцию, которая изменяет заданную строку следующим образом
создать функцию которая формирует строку, включив в нее все совпадающие символы двух строк C++
C++ Написать и протестировать функцию, которая по заданной строке Str формирует новую строку, состоящую только из цифр, входящих в Str
C++ Описать функцию, которая формирует список Common
Написать функцию, которая формирует строку, состоящую только из цифр, входящих в исходную строку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.09.2012, 01:52     Описать функцию, которая формирует текстовую строку #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
#include <string>
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
 
bool format(const string &inF, const string &outF)
{
    ifstream in_f(inF.c_str()); //поток для чтения
    ofstream out_f(outF.c_str()); //поток для записи
    if (!in_f.is_open() || !out_f.is_open()) return false; //если ошибка при открытии
    
    //строки для имени, отчества, фамилии
    string first_name; 
    string last_name;
    string family;
 
    do
    {
        in_f >> first_name >> last_name >> family; // чтение из файла в строки
        family.erase(family.find('_')); // удаление из фамилии символов, начиная с '_' и до конца 
        
        out_f << family << " " << *first_name.begin() << "." << *last_name.begin() << "\n"; //запись в файл
    
    } while (!in_f.eof()); // пока не конец файла
    
    in_f.close();
    out_f.close();
    
    return true;
}
    
    
int main()
{
    const string F1 = "F1";// имя исходного файл
    const string F2 = "F2";// имя конечного файл
    
    if (format(F1, F2) == false) cout << "Error!" << endl;
    else
        cout << "Done!" << endl;
    
    system("pause");
    return 0;
}
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
03.09.2012, 10:06     Описать функцию, которая формирует текстовую строку #3
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <locale.h>
 
int main()
{
    setlocale(LC_ALL,"Russian");
 
    FILE *fp_in = NULL, *fp_out = NULL;
    const char* filename[2] = { "f1.txt", "f2.txt" };
 
    if ((fp_in = fopen(filename[0],"r")) == NULL)
        printf("Unable to open file %s for reading\n",filename[0]);
 
    if ((fp_out = fopen(filename[1],"w")) == NULL)
        printf("Unable to open file %s for writing\n",filename[1]);
 
    char* str = new char[256];
    while (fgets(str, 256, fp_in) != NULL)
    {
        char* buf = NULL; char temp[256] = "\0";
        if ((buf = strrchr(str,' ')) != NULL)
        {
            int i = 0; *buf++;
            while (*buf != '\0') temp[i++] = *buf++;    
        }
 
        int n = 1;
        while (strchr(str,' ') != NULL)
        {
            while (str[n] != ' ')
            {
                for (int k = n; str[k] != '\0'; k++) 
                    str[k] = str[k+1];
            }
 
            str[n] = '.'; n+=2;
        }
 
        str[n-1] = '\0';
 
        fprintf(fp_out,"%s %s",temp,str);
    }
 
    fclose(fp_in);
    fclose(fp_out);
 
    _getch();
}
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
03.09.2012, 12:23     Описать функцию, которая формирует текстовую строку #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
24
25
26
27
28
29
30
31
32
33
34
#include <iostream> 
#include <fstream> 
#include <string>
using namespace std;   
 
string func(string s1, string s2, string s3) 
{   
    string str;  
 
    s3.erase(s3.find('_'));
 
    str = s1 + " " + s2 + " " + s3; 
    cout << str << endl;  
    return str;
}
 
int main() 
{ 
    ifstream infile; 
    infile.open("Text.txt"); 
    string str1, str2, str3;   
 
    ofstream outfile; 
    outfile.open("ASD.txt");
    
    while(!infile.eof()) 
    { 
        infile >> str1 >> str2 >> str3;  
        outfile << func(str1, str2, str3) << endl; 
    }  
 
    infile.close(); 
    outfile.close();
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.09.2012, 12:43     Описать функцию, которая формирует текстовую строку #5
David Sylva, не по заданию. Нужного форматирования нет. В F1 файле так:
C++
1
2
3
4
...
ИМЯ ОТЧЕСТВО ФАМИЛИЯ_2 
ИМЯ ОТЧЕСТВО ФАМИЛИЯ_1
...
В F2 должно быть так:
C++
1
2
3
4
...
ФАМИЛИЯ И.О.
ФАМИЛИЯ И.О.
...
То есть, если: ИВАН ИВАНОВИЧ СОКОЛОВ_1, то на выходе: СОКОЛОВ И.И
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
03.09.2012, 13:08     Описать функцию, которая формирует текстовую строку #6
Я думал автор так сократил ФИО

Добавлено через 3 минуты
Поправил
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
#include <iostream> 
#include <fstream> 
#include <string>
using namespace std;   
 
string func(string s1, string s2, string s3) 
{   
    string str;  
 
    s3.erase(s3.find('_'));
 
    str = s1 + " " + s2[0] + "." + s3[0] + "."; 
    cout << str << endl;  
    return str;
}
 
int main() 
{ 
    ifstream infile; 
    infile.open("Text.txt"); 
    string str1, str2, str3;   
 
    ofstream outfile; 
    outfile.open("ASD.txt");
    
    while(!infile.eof()) 
    { 
        infile >> str1 >> str2 >> str3;  
        outfile << func(str1, str2, str3) << endl; 
    }  
 
    infile.close(); 
    outfile.close();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2012, 13:17     Описать функцию, которая формирует текстовую строку
Еще ссылки по теме:

Описать функцию, которая формирует список Common, включив в него элементы, ко-торые входят одновременно в список М1 и М2 C++
Описать функцию PoslSu(t), которая выводит на печать последнюю строку непустого текстового файла C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.09.2012, 13:17     Описать функцию, которая формирует текстовую строку #7
Только вот так:
C++
1
str = s3 + " " + s1[0] + "." + s2[0] + ".";
Yandex
Объявления
03.09.2012, 13:17     Описать функцию, которая формирует текстовую строку
Ответ Создать тему
Опции темы

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