0 / 0 / 1
Регистрация: 27.05.2012
Сообщений: 26
1

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

02.09.2012, 23:16. Показов 1314. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан текст в файле F1 в виде:
ИМЯ ОТЧЕСТВО ФАМИЛИЯ_1
ИМЯ ОТЧЕСТВО ФАМИЛИЯ_2
...
Описать функцию, которая формирует текстовую строку в формате:
ФАМИЛИЯ И.О.
Сохранить преобразованный текст в файле F2.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2012, 23:16
Ответы с готовыми решениями:

Описать функцию, которая формирует список Common
В составе программы описать функцию, которая формирует список Common, включив в него элементы,...

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

Создать функцию, которая формирует строку, включив в нее все совпадающие символы двух строк
создать функцию которая формирует строку, включив в нее все совпадающие символы двух строк

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

6
5498 / 4893 / 831
Регистрация: 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;
}
1
96 / 748 / 279
Регистрация: 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();
}
3
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
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();
}
1
5498 / 4893 / 831
Регистрация: 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, то на выходе: СОКОЛОВ И.И
1
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
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();
}
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.09.2012, 13:17 7
Только вот так:
C++
1
str = s3 + " " + s1[0] + "." + s2[0] + ".";
2
03.09.2012, 13:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2012, 13:17
Помогаю со студенческими работами здесь

Написать и протестировать функцию, которая по заданной строке Str формирует новую строку, состоящую только из цифр, входящих в Str
Помогите ребят!!!!препод задачи дал для аттестации,сделал фактически все,кроме этой: &quot;Написать и...

Описать функцию, которая изменяет заданную строку следующим образом
задача:Описать функцию, которая изменяет заданную строку следующим образом: сначала записывает все...

Описать функцию PoslSu(t), которая выводит на печать последнюю строку непустого текстового файла
Описать функцию PoslSu(t), которая выводит на печать последнюю строку непустого текстового файла t...

Написать функцию, которая формирует вектор
Ребят ,помогите написать программу. Написать функцию, которая формирует вектор, элементами...

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

Создать функцию, которая по строке, содержащей ФИО формирует строку, содержащую фамилию с инициалами
Создайте функцию, которая по строке, содержащей ФИО формирует строку, содержащую фамилию с...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru