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

Координаты нахождения массива A в массиве B - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обьединить 2 сортированных списка в один,чередуя элементы первого и второго http://www.cyberforum.ru/cpp-beginners/thread592530.html
Обьединить 2 сортированных списка в один,чередуя элементы первого и второго сортированного списка. У меня есть похожее,но как переделать я не знаю.Вот программа,которая обьединяет 2 списка в...
C++ Вывести массив змейкой(три вида) Привет всем.Помогите решить задачки по змейкам.В приложении лежит 3 варианта как надо сделать. Вариант а и в удалось найти у вас на форуме. Задача стоит такова: Обнулить массив и заполнить его... http://www.cyberforum.ru/cpp-beginners/thread592504.html
C++ Интерполяционный поиск
В общем есть структура срок. Нужно организовать интерполяционный поиск. Как будет алгоритм выглядеть? Если бы поле структуры было бы цифрой, то все понятно, но у меня это срока символов. Запутался.
C++ Компилирование
Microsoft Visual C++ 2010 Express, оконное приложение windows forms. Какие настройки нужно выставить в компиляторе что бы приложение можно было запускать на других компьютерах под всеми системами...
C++ как работает метод vec.clear() http://www.cyberforum.ru/cpp-beginners/thread592474.html
Вот я тут читаю книгу по stl библиотеку про вектора, списки, очереди. Тут у меня возник вопрос, помогите плиз. Есть допустим vector<int> vec, в него мы поместили 1000000 штук int чисел, затем...
C++ Моделирование случайных величин Смоделировать бросание игрального кубика (т.е. с помощью датчика случайных чисел получить одно из целых чисел 1, 2, .... 6) каждым из двух игроков. Определить, кто из игроков получил на кубике... подробнее

Показать сообщение отдельно
Catstail
Модератор
22712 / 11081 / 1795
Регистрация: 12.02.2012
Сообщений: 18,273
31.05.2012, 21:03
Взял твой-же код и подрихтовал немного. Пургу выкинул:

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
#include "stdafx.h"
#include "stdio.h"
 
#define FileName "file.bin"
 
int m, n; //объявляет переменную
int * a;  //* - Указатель
int * b;
 
void MakeFile() //void - ничего не возвращает  //создает файл бинарный с 2 массивами
{
    //создает файл бинарный
 
    m= 6;   //m и n колличество переменных в массивах a и b
    n= 15;
    a= new int[m];
    b= new int[n];
 
    //присваивание значение массиву
 
    a[0]= 23;
    a[1]= 54;
    a[2]= 12;
    a[3]= 4;
    a[4]= 0;
    a[5]= 28;
 
 
    b[0]= -1;
    b[1]= -65;
    b[2]= 87;
    b[3]= 100;
    b[4]= 23;  //!!!
    b[5]= 54;
    b[6]= 12;
    b[7]= 4;
    b[8]= 0;
    b[9]= 28;
    b[10]= 81;
    b[11]= 2;
    b[12]= 1;
    b[13]= 89;
    b[14]= 1000;
 
    FILE* f= fopen(FileName, "wb");  //открывает файл для записи в бирарном режиме (двоичном) "wb"
 
    fwrite(&m, 1, sizeof(int), f);  //записывает файл
    fwrite(&n, 1, sizeof(int), f);  
 
    fwrite(a, m, sizeof(int), f);
    fwrite(b, n, sizeof(int), f);
 
    fclose(f);  //закрывает файл
 
    delete a;
    delete b;
 
}
 
int main()  //точка входа в программу
{
    int ipos,k,i;
 
    MakeFile();  //вызов функции, создание файла
 
    FILE* f= fopen(FileName, "rb");  //открывает файл для чтения в бинарном режиме
 
    fread(&m, 1, sizeof(int), f);  //читает файл  sizeof(int) - размер переменной типа int 
    fread(&n, 1, sizeof(int), f);
 
    a= new int[m];  //создает новый массив 
    b= new int[n];  //создает новый массив 
 
    fread(a, m, sizeof(int), f);
    fread(b, n, sizeof(int), f);
 
    fclose(f);  //закрывает файл
 
    // Ищем, с какой позиции массив a входит в массив b
 
    for (ipos=0;ipos<=(n-m);ipos++) // цикл по номеру позиции
    {
        k=0;                        // счетчик совпадений
        for (i=0;i<m;i++)
            if (a[i] != b[ipos+i])  // при первом расхождении
                break;              // выход из внутр. цикла - 
            else                    // увеличиваем ipos
                k++;                // увеличиваем счетчик совпадений
 
        if (k == m)                 // если совпадений ровно m - нашли!
        {
            printf("Position is %d\n",ipos); // печать
            break;                           // выход
        }
    }
 
    // если ни разу не было m совпадений
 
    if (k != m) printf("Position not found\n");
 
    delete a; // удаляем дин. массивы
    delete b;
 
    return 0;  //завершает программу
}
На твоих данных выдает 4, что совершенно верно.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru