4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102

Слияние двух файлов по алгоритму: цифра вставляется после двух символов

05.05.2015, 17:23. Показов 3234. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include <iostream>
#include <io.h>
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
 
using namespace std;
 
// Даны два файла. Составить программу слияния этих файлов
// в один по алгоритму - цифра вставляется после двух символов
 
void Reshenie(char str1[100], char str2[100], char str3[200], FILE *f_1, FILE *f_2, FILE *f_3)
{
    f_1 = fopen("text1.txt", "a+");
    f_2 = fopen("text2.txt", "a+");
 
    while (fgets(str1, 100, f_1))
    {
        while (fgets(str2, 100, f_2))
        {
            if (!strcmp(str1, str2))
                fputs(str3, f_3);
        }
        fseek(f_3, 0, 0);
    }
 
    fclose(f_1);
    fclose(f_2);
 
    cout << "Result file nomer 3: " << str3;
}
int main()
{
    FILE *f_1, *f_2, *f_3;
    char str1[100], str2[100], str3[200];
 
    f_1 = fopen("text1.txt", "a+");
        if (f_1 == NULL)
        {
            f_1 = fopen("text1.txt", "a+");
        }
    cout << "Vvedite text file nomer 1: " << str1;
    cin >> str1;
    fscanf(f_1, str1);
    fclose(f_1);
 
    f_2 = fopen("text2.txt", "a+");
        if (f_2 == NULL)
        {
            f_2 = fopen("text2.txt", "a+");
        }
    cout << "Vvedite text file nomer 2: " << str2;
    cin >> str2;
    fscanf(f_2, str2);
    fclose(f_2);
 
    system("CLS");
    Reshenie(str1, str2, str3, f_1, f_2, f_3);
    getch();
 
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2015, 17:23
Ответы с готовыми решениями:

Слияние двух файлов
Здравствуйте. В папке есть два тхт файла, как мне их соединить и записать в третий и в третьем файле сделать между ними, одну пустую...

Слияние двух текстовых файлов
необходимо прогу оформить в ввиде функции, вызываемой из основной программы. Целой переменной n обьявленной глобальной присвоить длину...

Вывод двух файлов и слияние их
есть файл вопросы.txt и ссылки.txt и в каждом из файлов строки 01. 02. ... 40. как сделать чтобы, было вот так:

39
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
05.05.2015, 18:25
Задача не ясна. Что за цифра вставляется? А если нет там цифр?
0
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
06.05.2015, 09:47  [ТС]
nmcf, два файла, в одном текст(прол к), во втором цифры(456), реализовать слияние файлов(пр4ол5 к6) , если цифр нету, то можно сделать выход, в файле нету цифр. Подкорректируйте вышеуказанный код или подскажите, что неправильно сделал. как реализовать алгоритм два символа цифра?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.05.2015, 10:12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
f_1 = fopen("text1.txt", "r");
f_2 = fopen("text2.txt", "r");
f_3 = fopen("text3.txt", "w");
 
int c, n;
 
while (true)
{
    if ((c = fgetc(f_1) == EOF) break;
    fputc(c, f_3);
    if ((c = fgetc(f_1) == EOF) break;
    fputc(c, f_3);
    if ((n = fgetc(f_2) == EOF) break;
    fputc(n, f_3);
}
 
if (c != EOF) while ((c = fgetc(f_1) != EOF) fputc(c, f_3);
 
fclose(f_1);
fclose(f_2);
fclose(f_3);
0
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
06.05.2015, 10:49  [ТС]
nmcf, а как цикл реализовать?
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
while (!f_3.eof())
{
   f_3.get(c);
   i++;
}
for(int j = 0; j < s; j++){
 if (isalpha(j) || isspace(j)){
{
 cout << j;
}
 else{
  b = j+1;
  j+1 = i
   j=b;}
 for (int j = 0; j = j*3; j++)
 {
  if (!isdigit(j))
{
 c = j+1;
  j+1 = i
   j=c;
}
}   
}
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.05.2015, 11:05
Какой цикл? Там всё уже есть.
0
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
06.05.2015, 12:06  [ТС]
nmcf, т.е. выводится сначала 2 символа потом цифра пока не конец строки у вас, а если в двух файлах будут и цифры, и символы, как тогда пройтись циклом и вывести по алгоритму?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.05.2015, 12:39
Приведи пример. Если в первом файле есть цифры, их игнорировать или просто записывать в выходной, но не считать? Тоже со вторым файлом - если там есть не цифры, их пропускать или что?
0
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
06.05.2015, 14:27  [ТС]
nmcf, если в первом файле (йцу34 ук) и второй файл (435лдаи), то формируется третий (йц3у 4ук4дл3аи5), по идее получается сортировка 3 файла по алгоритму 2 символа 1 цифра, так наверное

Добавлено через 1 час 17 минут
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
#include <iostream>
#include <stdio.h>
#include <windows.h>
 
using namespace std;
void Sliyanie (char str1[100], char str2[100], char strr[200], FILE *f1, FILE *f2, FILE *fr)
{
    f1 = fopen("file1.txt", "r");
    f2 = fopen("file2.txt", "r");
    fr = fopen("filer.txt", "w");
 
    int c, n;
 
    while (true)
    {
        if (c = fgetc(f1) == EOF) break;
        fputc(c,fr);
        if (c = fgetc(f1) == EOF) break;
        fputc(c, fr);
        if (n = fgetc(f2) == EOF) break;
        fputc(n, fr);
    }
 
    if (c != EOF) while (c = fgetc(f1) != EOF) fputc(c, fr);
 
    fclose(f1);
    fclose(f2);
    fclose(fr);
 
    cout << strr;
}
int main()
{
 FILE *f1, *f2, *fr;
 char str1[100], str2[100], strr[200];
 
 f1 = fopen("file1.txt","a+");
 if (f1 == NULL)
 {
     f1 = fopen("file1.txt","a+");
 }
 cout << "Vvedite text 1-file: ";
 cin >> str1;
 fscanf(f1 , str1);
 fclose(f1);
 
 f2 = fopen("file2.txt", "a+");
 if (f2 == NULL)
 {
     f2 = fopen("file2.txt", "a+");
 }
 cout << "Vvedite text 2-file: ";
 cin >> str2;
 fscanf(f2 , str2);
 fclose(f2);
 
 system("CLS");
 
Sliyanie(str1, str2, strr, f1, f2, fr);
 
return 0;
}
не выводит третий файл после преобразования, с чем связана ошибка?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.05.2015, 19:53
Ну ты намудрил, у тебя цифры первого файл переставляются, что ли? Сделай, чтобы по-простому хотя бы работало для начала.
Что значит не выводит? Файл создаётся? Исходные файлы есть?
fscanf() на fprintf() замени.
0
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
06.05.2015, 23:29  [ТС]
nmcf, не выводит результат 3 файла, не читает консоль, хотя, если написать вывод 1 и 2 файла, то их результат выводит, а третий неправильной кодировки надпись получается

Добавлено через 11 минут
я с консоли создаю и ввожу данные файлов
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.05.2015, 09:38
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
#include <iostream>
#include <stdio.h>
#include <windows.h>
 
using namespace std;
 
void Sliyanie ()
{
    FILE *f1, *f2, *fr;
 
    f1 = fopen("file1.txt", "r");
    f2 = fopen("file2.txt", "r");
    fr = fopen("filer.txt", "w");
 
    int c, n;
 
    while (true)
    {
        if (c = fgetc(f1) == EOF) break;
        fputc(c,fr);
        if (c = fgetc(f1) == EOF) break;
        fputc(c, fr);
        if (n = fgetc(f2) == EOF) break;
        fputc(n, fr);
    }
 
    if (c != EOF) while (c = fgetc(f1) != EOF) fputc(c, fr);
 
    fclose(f1);
    fclose(f2);
    fclose(fr);
 
    cout << strr;
}
int main()
{
 FILE *f1, *f2;
 char s[100];
 
 if ((f1 = fopen("file1.txt","w")) == NULL) return 0;
 
 cout << "Vvedite text 1-file: ";
 cin.getline(s, 100);
 fprintf(f1, "%s", s);
 fclose(f1);
 
 if ((f2 = fopen("file2.txt","w")) == NULL) return 0;
 
 cout << "Vvedite text 2-file: ";
 cin.getline(s, 100);
 fprintf(f2 , "%s", s);
 fclose(f2);
 
 system("CLS");
 
 Sliyanie();
 
return 0;
}
0
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
07.05.2015, 10:51  [ТС]
nmcf, все равно не хочет преобразовывать третий файл, так как и до этого с первыми двумя хорошо все, третий не работает ?
0
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
07.05.2015, 12:51  [ТС]
может слиять два файла в один и там отсортировать его отсортировать
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.05.2015, 15:28
Скобки пропустил. Вот так работает. Результат смотреть в третьем файле.
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
#include <iostream>
#include <cstdio>
 
using namespace std;
 
void Sliyanie ()
{
    FILE *f1, *f2, *fr;
 
    f1 = fopen("file1.txt", "r");
    f2 = fopen("file2.txt", "r");
    fr = fopen("filer.txt", "w");
 
    int c, n;
 
    while (true)
    {
        if ((c = fgetc(f1)) == EOF) break;
        fputc(c,fr);
        if ((c = fgetc(f1)) == EOF) break;
        fputc(c, fr);
        if ((n = fgetc(f2)) == EOF) break;
        fputc(n, fr);
    }
 
    if (c != EOF) while ((c = fgetc(f1)) != EOF) fputc(c, fr);
 
    fclose(f1);
    fclose(f2);
    fclose(fr);
}
 
int main()
{
    FILE *f1, *f2;
    char s[100];
 
    if ((f1 = fopen("file1.txt","w")) == NULL) return 0;
 
    cout << "Vvedite text 1-file: ";
    cin.getline(s, 100);
    fprintf(f1, "%s", s);
    fclose(f1);
 
    if ((f2 = fopen("file2.txt","w")) == NULL) return 0;
 
    cout << "Vvedite text 2-file: ";
    cin.getline(s, 100);
    fprintf(f2 , "%s", s);
    fclose(f2);
 
    system("cls");
 
    Sliyanie();
 
    return 0;
}
1
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
07.05.2015, 16:48  [ТС]
nmcf, спасибо, работает, можешь подсказать словами с логикой решения, если в первом файле будут встречаться цифры, будет типа того :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 while (true)
    {
        if (((c = fgetc(f1)) == EOF) && (isalpha(c = fgetc(f1))==)|| isspace(c = fgetc(f1))) break;
        fputc(c,fr);
  else 
{берем следующий элемент, пока не буква}
        if (((c = fgetc(f1)) == EOF) && (isalpha(c = fgetc(f1))==)|| isspace(c = fgetc(f1))) break;
        fputc(c,fr);
  else 
{берем следующий элемент, пока не буква}
        if ((n = fgetc(f2)) == EOF) break;
        fputc(n, fr);
    }
 
    if (c != EOF) while ((c = fgetc(f1)) != EOF) fputc(c, fr);
это если в первом будут встречаться цифры, да и то работать не будет, неизвестно куда девать цифры, а если при том, что еще во втором файле будут символы, сам себе придумываю задачи, проще наверное брать 3 файл и его сортировать, да?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.05.2015, 19:40
Вот так будет пропускать цифры:
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
void Sliyanie ()
{
    FILE *f1, *f2, *fr;
 
    f1 = fopen("file1.txt", "r");
    f2 = fopen("file2.txt", "r");
    fr = fopen("filer.txt", "w");
 
    int c, n;
 
    while (true)
    {
        for (int i = 0; i < 2;)
        {
            if ((c = fgetc(f1)) == EOF) break;
            fputc(c, fr);
            if (!isdigit(c)) ++i;
        }
        if (c == EOF) break;
        if ((n = fgetc(f2)) == EOF) break;
        fputc(n, fr);
    }
 
    if (c != EOF) while ((c = fgetc(f1)) != EOF) fputc(c, fr);
 
    fclose(f1);
    fclose(f2);
    fclose(fr);
}
Да оставь как есть. Сказано же: после двух символов. Цифра тоже символ. Задай в первом файле любой текст, а во втором только цифры.
0
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
07.05.2015, 22:42  [ТС]
nmcf, так-то оно так хочется разобраться прост
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.05.2015, 23:03
В чём тут разбираться-то? Здравый смысл должен быть в задании.
0
4 / 4 / 2
Регистрация: 18.12.2012
Сообщений: 102
07.05.2015, 23:43  [ТС]
nmcf, эт да, я сам уже придумываю условий, ты не знаешь как рисовать в коде блоксе, смотрел что старая библиотека graphics.h не используется, используется windows.h, да?

Добавлено через 5 минут
как реализовать вращение рисунка рисунок ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2015, 23:43
Помогаю со студенческими работами здесь

Слияние двух текстовых файлов
Ребят помогите плизз задали курсовую в универе на тему Разработать программу слияния двух текстовых файлов в один файл по принципу: две...

Слияние двух текстовых файлов
Помогите пожалуйста!! нужно разработать программу слияния двух текстовых файлов в один файл по принципу: строка первого файла, две строки...

Слияние двух отсортированных файлов
Доброго все времени суток, господа. Прошу помощи у того, кого не затруднит. Пытаюсь реализовать алгоритм слияния 2-х отсортированных...

Слияние двух текстовых файлов
Пожалуйста,помогите написать вот такую программу : Произвести слияние двух текстовых файлов. Имена файлов вводятся с клавиатуры. На языке...

Произвести слияние двух файлов...
Даны два файла - А и В: целых чисел. Файл А - отсортирован по возрастанию; файл В - отсортирован по убыванию. Произвести слияние двух...


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

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

Новые блоги и статьи
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru