Форум программистов, компьютерный форум 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# подробнее

Показать сообщение отдельно
click93
0 / 0 / 0
Регистрация: 31.05.2012
Сообщений: 3
31.05.2012, 18:22  [ТС]     Координаты нахождения массива 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
106
107
108
109
110
111
112
#include <iostream>
#include <stdio.h>
#include <time.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);  //закрывает файл
}
 
int main()  //точка входа в программу
{
    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);  //закрывает файл
    //выводим содержимое массивов
    std::cout << "A";   
    for (int i = 0; i < m; i++)
        std::cout << a[i] << " ";
    std::cout << std::endl; // перевод строки
 
    std::cout << "B";
    for (int i = 0; i < n; i++)
        std::cout << b[i] << " ";
    std::cout << std::endl;
    
    int foundres= -1;  //проверяет нашли мы ответ или не нашли (если меньше 0 то не нашли)
    for (int i=0; i<n; i++)  //пробегает по массиву b
    {
        bool found= true;  //bool - буловская переменная типа данных принимает true or false
        int j;  //объявляем переменную j
        for (j=0; j<m && j+i<n; j++)  //цикл по а
        {
            if (a[j]!=b[i+j])  //если а[j] не равно b[j]+j
            {
                found = false;  //массив не найден
                break;  //завершает цикл
            }
        }
 
        if ((found)&&(j==m))  //если нашли то сравниваем j с m
        {
            foundres= i;  //запоминаем позицию i
            break;  //завершает цикл
        }
    }
 
    if (foundres>=0)  //если позиция > или = 0
    {
        std::cout<<"Found in pisition "<<foundres;  //выводит на экран строку
    }else  //иначе
        std::cout<<"Not Found";  //выводит Not Found   //cout - стандартный поток вывода
 
    system ("pause");  //выставляет паузу
    return 0;  //завершает программу
}
Добавлено через 4 минуты
Catstail, можешь помочь с алгоритмом решения? объяснить по порядку что делаем?
типо того что ниже, только про мою задачу) плз) а то я курсовую по этой задачи пишу и остался ток алгаритм и заключение((

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2 Алгоритм решения
Пользователем вводится две строки и знак операции. Затем происходит проверка числа на знак «-» .Если данный знак обнаруживается в первом или во втором числе, то знак «обрезается», а флаг isFirstNumberNegative и/или isSecondNumberNegative меняет значение на true (изначально значения флагов – false). Далее обнуляется рабочий массив, т.е. происходит его инициализация. Потом проверка условий для знака операции от зависимости введенных чисел:
1.  Если знак операции «-» и числа отрицательные – знак операции не меняется.
2.  Если знак операции  «-» и второе число отрицательное – знак операции меняется на «+».
3.  Если знак операции «+» и второе число отрицательное – знак меняется на «-».
4.  Если знак операции «-» и первое число отрицательно – знак операции меняется на «+».
5.  Если знак операции «+» и первое число отрицательно – знак операции меняется на «-».
Так же при проверки этих условий изменяется значение флага числа с true на false. 
Затем находится длина строк с помощью функции length. Выясняется какое из чисел больше через оператор if при этом, если второе число больше первого: числа меняются местами и флаги тоже. Если числа одинаковой длины выполняется алгоритм для сравнения чисел порязрядово и так же меняется значение чисел и флаги местами при условии ,если второе число больше первого ( а так же переменной isSecondNumberGreater присваевается значение true).
Вводится в рабочий массив значение первого числа из строки путем вычитания из i символа строки символа '0', так как в строке хранятся символы от 0 до 9, то путем вычитание находится код данного числа и записывается в рабочий массив. Далее по множественному оператору выбора switch выбирается знак операции хранимый в переменной opearion. Числа складываются/вычитаются с конца массивов по примеру сложения/вычитания в столбик, если число получается меньше или равно девяти ,то все хорошо –переход к следующим числам, нет – в buffer[i] помещается остатка от числа, а в результат помещается во второй массив buffer[k] и хранит значение 1 (такой же алгоритм и при вычитании).
Проверка и печать знака по условиям:
1.  Если второе число больше первого и первое число отрицательно печать «-».
2.  Если длина строк одинакова и первое число отрицательно, и втрое положительно, то печать знака «-».
3.  Если второе число не больше первого и первое число, и втрое число отрицательны, то печать знака «-».
В остальных случаях печатается знак «+». Далее происходит печать самого массива по оператору for от 0 до n с шагом 1 при условии что значение не 0 и не первое ненулевое значение, потом по условию достижение печать символа.
 
Текущее время: 00:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru