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

Задача «Общая подпоследовательность» - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужна книга по программированию под VxWorks http://www.cyberforum.ru/cpp-beginners/thread374256.html
Помогите найти, пожалуйста, какую-нить книжечку в сети по программированию под VxWorks. Ищу ищу и никак не найду. Вот, например, нашёл http://www.bookseller.ru/book.php?n=86 но это надо покупать и не известно когда доставят. Поэтому нужно что-то в электронном виде. Ну, на крайний случай на английском языке =) Но желательно на русском=)
C++ Найдите ошибку Не могу понять в чем ошибка. Write a function that find the sum of the elements that are located between first two zeros. Input: First line contains n (1<=n<=100) Than n numbers are inputed. Output: The sum between first two zeros. http://www.cyberforum.ru/cpp-beginners/thread374255.html
C++ Слияние двух списков(срочно!)
Даны два списка, нужно их склеить. Вот, написал, но при комплияции выдаются неведомые мне ошибки. Кто-нибудь из опытных людей может мне помочь, пожалуйста? Вот код: #include <iostream> #include <math.h> using namespace std; struct node //Описание первого списка
Строка C++
Ввести строку длиной до 30 символов, заменить в ней двойных символов на одиночные, пробелов - на знак подчёркивания, сочетания '**' на многоточие '...' Заранее спасибо.!
C++ Простая задача чертёж http://www.cyberforum.ru/cpp-beginners/thread374240.html
нужно простой построить чертёж типо как точки ставить прямые проводить обозначать вершины цифрами кому не сложно напишите
C++ При вводе имени абонента или его номера выводить его фамилию, номер телефона и адрес. Создать телефонный справочник на 10 имен, адресов и номеров. При вводе имени абонента или его номера выводить его фамилию, номер телефона и адрес. Не могу что-то разобраться #include <iostream> #include <cstdio> using namespace std; подробнее

Показать сообщение отдельно
Петррр
 Аватар для Петррр
5914 / 3351 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
29.10.2011, 20:06     Задача «Общая подпоследовательность»
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <stdio.h>
#include <stdlib.h>
 
void read_array(FILE *file, int *arr, size_t count)
{
    int i;
    for(i = 0; i < count; i++)
        fscanf(file, "%d ", &arr[i]);
}
 
int find(int* arr, size_t size, int val)
{
    int i = 0;
    while (i != size && arr[i] != val)
        i++;
    return i;
}
 
void ghost(const char *filen_name_from, const char *file_name_to)
{
    int *arr1, *arr2, *arr3, *buffer;
    size_t arr1_size, arr2_size, arr3_size, buffer_size;
    size_t lst_length = 0, lst_pos = -1, i, lst_length_buffer;
    size_t fnd_arr2, fnd_arr3;
    
    FILE *file_from, *file_to;
    file_from = fopen(filen_name_from, "r");
    file_to = fopen(file_name_to, "w");
 
    /* Чтение первого массива */
    fscanf(file_from, "%d\n", &arr1_size);
    arr1 = (int*) malloc(sizeof(int) * arr1_size);
    read_array(file_from, arr1, arr1_size);
 
    /* Чтение второго массива  */
    fscanf(file_from, "\n%d\n", &arr2_size);
    arr2 = (int*) malloc(sizeof(int) * arr2_size);
    read_array(file_from, arr2, arr2_size);
 
    /* Чтение третьего массива */
    fscanf(file_from, "\n%d\n", &arr3_size);
    arr3 = (int*) malloc(sizeof(int) * arr3_size);
    read_array(file_from, arr3, arr3_size);
    /***************************/
 
    if (arr1_size > arr2_size)
    {
        buffer = arr2;
        arr2 = arr1;
        arr1 = buffer;
        buffer_size = arr2_size;
        arr2_size = arr1_size;
        arr1_size = buffer_size;
    }
    if (arr1_size > arr3_size)
    {
        buffer = arr3;
        arr3 = arr1;
        arr1 = buffer;
        buffer_size = arr3_size;
        arr3_size = arr1_size;
        arr1_size = buffer_size;
    }
 
    for(i = 0; i < arr1_size; i++)
    {
        fnd_arr2 = find(arr2, arr2_size, arr1[i]);
        fnd_arr3 = find(arr3, arr3_size, arr1[i]);
        lst_length_buffer = 0;
        if (fnd_arr2 != arr2_size && fnd_arr3 != arr3_size)
        {
            lst_length_buffer++;
            while (
                arr1[i + lst_length_buffer] == arr2[fnd_arr2 + lst_length_buffer] && 
                arr2[fnd_arr2 + lst_length_buffer] == arr3[fnd_arr3 + lst_length_buffer] &&
                (fnd_arr2 + lst_length_buffer) < arr2_size &&
                (fnd_arr3 + lst_length_buffer) < arr3_size)
                lst_length_buffer++;
            if (lst_length_buffer > lst_length)
            {
                lst_length = lst_length_buffer;
                lst_pos = i;
                i += lst_length;
            }
        }
    }
 
    for(i = 0; i < arr1_size; i++)
        printf("%d ", arr1[i]);
    printf("\n");
    for(i = 0; i < arr2_size; i++)
        printf("%d ", arr2[i]);
    printf("\n");
    for(i = 0; i < arr3_size; i++)
        printf("%d ", arr3[i]);
    printf("\n");
    /* Запись в файл длины последовательности */
    fprintf(file_to, "%d\n", lst_length);
    
    /* Если последовательность найдена, с указанного индекса записывается
       последовательность длиной lst_length с индекса lst_pos
      */
    if (lst_length > 0)
        for(i = lst_pos; i < lst_length; i++)
            fprintf(file_to, "%d ", arr1[i]);
 
    free(arr1);
    free(arr2);
    free(arr3);
    fclose(file_from);
    fclose(file_to);
}
 
int main(int argc, char **argv)
{
    const char *filen_name_from = "C:/input.txt";
    const char *file_name_to = "C:/output.txt";
    ghost(filen_name_from, file_name_to);
    system("pause");
    return EXIT_SUCCESS;
}
Код
3
1 3 3
4
2 1 3 3
6
0 1 3 3 1 2
Код
3
1 3 3
Сразу говорю нужно доработать.
 
Текущее время: 10:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru