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

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

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

Показать сообщение отдельно
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,108
31.05.2012, 21:03     Координаты нахождения массива A в массиве B
Взял твой-же код и подрихтовал немного. Пургу выкинул:

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, что совершенно верно.
 
Текущее время: 05:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru