Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
4 / 4 / 0
Регистрация: 21.12.2015
Сообщений: 195

Элементы файлов f1 и f2 упорядочены по не убыванию

10.06.2016, 09:41. Показов 2199. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал такую программу, но она работает не корректно... уже голову сломал, а понять не могу где ошибся.
Тестовые данные:
(Первый файл) - {1 3 7 7 8 9 9 12 14 17}
(Второй файл) - {4 5 5 7 7 7 8 11 11 15}
(Файл вывода в моем случае) - {1 3 4 5 5 7 7 7 7 7 8 11 11 158 9 9 12 14 17}
P.S - не очень силен в программировании, просто ткните носов в ошибку...
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
#include <stdio.h>
#include <locale.h>
#include <conio.h>
#include <io.h>
 
 
void association (FILE *f1, FILE *f2, FILE *f3) {
fseek(f1,0,SEEK_END);
long sizef1 = ftell(f1);
fseek(f2,0,SEEK_END);
long sizef2 = ftell(f2);
 
int a,b,i,j;
fseek(f1,0, SEEK_SET);
fseek(f2,0, SEEK_SET);
i = 0; j = 0;
while ((i <= sizef1-1) || (j <= sizef2-1)){
  if ((i <= sizef1-1) && (j <= sizef2-1)){
    fseek(f1, i, SEEK_SET);
    a = getc(f1);
    fseek(f2, j, SEEK_SET);
    b = getc(f2);
    if (a<b){
      fputc(a, f3);
      i++;}
    else{
      fputc(b, f3);
      j++;}
}
  else if ( j > sizef2-1) {
    fseek(f1,i, SEEK_SET);
    a = getc(f1);
    fputc(a, f3);
    i++;}
  else if ( i > sizef1-1){
    fseek(f2, j, SEEK_SET);
    b = getc(f2);
    fputc(b, f3);
    j++;}
}
}
 
int main(){
setlocale(LC_ALL, "RUS");
char fname1[20],fname2[20],fname3[20];
 
printf("Введите имя первого файла с расширением: ");
scanf("%s", fname1);
printf("Введите имя второго файла с расширением: ");
scanf("%s", fname2);
printf("Введите имя третьего файла с расширением, для записи результата: ");
scanf("%s", fname3);
 
FILE *f1, *f2, *f3;
 
f1 = fopen(fname1, "r");
f2 = fopen(fname2, "r");
f3 = fopen(fname3, "w");
 
association(f1, f2, f3);
 
fclose(f1);
fclose(f2);
fclose(f3);
 
return 0;
}
Добавлено через 1 час 9 минут
Забыл дать саму задачу. "Элементы файлов f1 и f2 упорядочены по не убыванию. Объединить эти элементы в один файл f3, также упорядоченный по не убыванию."

Добавлено через 8 часов 6 минут
Ребят, помогите пожалуйста, уже все мозги сломал...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2016, 09:41
Ответы с готовыми решениями:

Проверить, упорядочены ли элементы по не убыванию
помогите решить задачу на языке С# Заменить первый положительный элемент в массиве на три элемента, равных заданному значению. Если такая...

Определить упорядочены ли элементы массива по убыванию
Ввести одномерный массив А , вывести его. Определить упорядочены ли элементы массива по убыванию. Если не упорядочены, то определить номер...

Определить, упорядочены ли элементы массива по убыванию
Задача: Определить, упорядочены ли элементы массива по убыванию. Данный код работает для положительных элементов. С отрицательными...

28
233 / 99 / 27
Регистрация: 20.03.2014
Сообщений: 304
10.06.2016, 13:27
Студворк — интернет-сервис помощи студентам
Blekzet, см предыдущий ответ)
1
4 / 4 / 0
Регистрация: 21.12.2015
Сообщений: 195
10.06.2016, 14:31  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void create_dyn_arr(FILE *f1, FILE *f2, FILE *f3){
int *arr;
int n, b, i, zn;
n = cinword(f1) + cinword(f2);
char str1[n];
char str2[n];
arr = (int*) malloc(n*sizeof(int));
while(!feof(f1) || !feof(f2)){
        fscanf(f1, "%s%d", str1, &b);
        zn = atoi(str1);
        arr[i] = zn;
        i++;
        fscanf(f2, "%s%d", str2, &b);
        zn = atoi(str2);
        arr[i] = zn;
        i++;
    }
buble_sort(n, arr);
for(int c = 0; c < n; c++){
    fprintf(f3, "%d ",arr[c]);
}
free(arr);
}
Написал нечто подобное (просто отдельная функция);
Тестовые данные:
f1 (1 3 7 7 8 9 9 12 14 17)
f2 (4 5 5 7 7 7 8 11 11 15)
Вывод (-1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939)............. явно не так должно быть...
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
10.06.2016, 14:47
fscanf() по-древнему для текстовых.
1
4 / 4 / 0
Регистрация: 21.12.2015
Сообщений: 195
10.06.2016, 14:50  [ТС]
Древний, не древний, что в коде не так-то (знаю, что древний, просто так надо)
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
10.06.2016, 14:51
Зачем там atoi()? Функция сразу считывает целое.
C++
1
2
i = 0;
while (fscanf(f1, "%d", &arr[i]) == 1) ++i;
Добавлено через 1 минуту
Цитата Сообщение от Blekzet Посмотреть сообщение
Древний, не древний
Ты в разделе C++, значит потоки надо использовать.
1
4 / 4 / 0
Регистрация: 21.12.2015
Сообщений: 195
10.06.2016, 14:55  [ТС]
-1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939 -1163005939
Постоянно выдает вот эту абракадабру...
У меня почему-то чувство, что я где-то не тот спецификатор поставил... а может и нет...
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
10.06.2016, 14:58
Программу покажи.
1
4 / 4 / 0
Регистрация: 21.12.2015
Сообщений: 195
10.06.2016, 14:59  [ТС]
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
77
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <locale.h>
 
int cinword(FILE *fl){
 int fSpace = 1, cnt = 0;
    char ch[2] = {0};
    while (!feof(fl))
    {
        fgets(ch, 2, fl);
        if (ch[0] > 32)
            fSpace = 0;
        else if (0 == fSpace)
        {
            cnt++;
            fSpace = 1;
        }
        ch[0] = 0;
    }
return cnt;
}
 
void buble_sort(int n, int *arr){
 for(int i = n - 1; i >= 1; i--){
    for(int j = 0; j < i; j++){
        if (arr[j] > arr[j + 1]){
            int f = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = f;}
        }
    }
}
 
void association(FILE *f1, FILE *f2, FILE *f3){
int *arr;
int n, i;
n = cinword(f1) + cinword(f2);
arr = (int*) malloc(n*sizeof(int));
while(!feof(f1) || !feof(f2)){
        fscanf(f1, "%d", arr[i]);
        i++;
        fscanf(f2, "%d", arr[i]);
        i++;
    }
buble_sort(n, arr);
for(int c = 0; c < n; c++){
    fprintf(f3, "%d ",arr[c]);
}
free(arr);
}
 
int main(){
setlocale(LC_ALL, "RUS");
char fname1[20],fname2[20],fname3[20];
 
printf("Введите имя первого файла с расширением: ");
scanf("%s", fname1);
printf("Введите имя второго файла с расширением: ");
scanf("%s", fname2);
printf("Введите имя третьего файла с расширением, для записи результата: ");
scanf("%s", fname3);
 
FILE *f1, *f2, *f3;
 
f1 = fopen(fname1, "r");
f2 = fopen(fname2, "r");
f3 = fopen(fname3, "w");
 
association(f1, f2, f3);
 
fclose(f1);
fclose(f2);
fclose(f3);
 
return 0;
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
10.06.2016, 15:41
Лучший ответ Сообщение было отмечено Blekzet как решение

Решение

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
int cinword(FILE *fl)
{
    int x, cnt = 0;
    while (fscanf(fl, "%d", &x) == 1) ++cnt;
    return cnt;
}
 
void association(FILE *f1, FILE *f2, FILE *f3)
{
int *arr;
int n, i;
n = cinword(f1) + cinword(f2);
 
rewind(f1);
rewind(f2);
 
arr = (int*) malloc(n*sizeof(int));
 
i = 0;
while(fscanf(f1, "%d", &arr[i]) == 1) ++i;
while(fscanf(f2, "%d", &arr[i]) == 1) ++i;
 
buble_sort(n, arr);
for(int c = 0; c < n; c++){
    fprintf(f3, "%d ",arr[c]);
}
free(arr);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2016, 15:41
Помогаю со студенческими работами здесь

Определить, упорядочены ли элементы массива по убыванию
Всем привет!) Помогите с написанием программы . Ввести одномерный статический массив из k чисел и определить, упорядочены ли элементы...

Определить, упорядочены ли по убыванию элементы k-ой строки матрицы
дана целочисленная матрица порядка n на m. Определить ,упорядочены ли по убыванию элементы k-ой строки. #include &quot;stdafx.h&quot; ...

Определить, упорядочены ли по убыванию элементы k-ой строки матрицы
дана целочисленная матрица порядка n на m. Определить ,упорядочены ли по убыванию элементы k-ой строки.#include &quot;stdafx.h&quot; ...

Определить, упорядочены ли по убыванию элементы одномерного массива
Составить процедуру, вычисляющую значение TRUE, если все элементы одномерного массива упорядочены по убыванию их значений, и FALSE в...

Определить, упорядочены ли по убыванию элементы k ой строки матрицы
почему при вводе одного и того же значения дается разный ответ? #include &lt;iostream&gt; #include &lt;time.h&gt; #include ...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru