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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zabludshiy
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 34
#1

Массив и подмассив (определить, является ли второй массив подмассивом первого) - C++

08.05.2013, 01:06. Просмотров 639. Ответов 0
Метки нет (Все метки)

Поставлена следующая задача:

Ввод из: input.txt
Вывод в: output.txt

Дано два одномерных массива. Один из N элементов, второй из R элементов. Необходимо определить, является ли второй массив подмассивом первого. Если да, то вывести номер позиции в первом массиве, начиная с которой начинается второй массив, в противном случае вывести слово «NO».

Входные данные: В первой строке дано два числа N и R (0 < N, R < 20). Во второй строке N чисел первого массива. В третьей строке R чисел второго массива. Все числа в массивах не превышают по модулю 50000.

Выходные данные: Номер позиции первого вхождения второго массива в первый массив, или слово «NO». Номер позиции соответствует индексу элемента массива.

Пример входных данных
4 2
1 2 3 4
2 3

Пример выходных данных
1

Получился следующий код:

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
#include <iostream>
#include <fstream>
using namespace std;
int main(){
    int m,n;
    ifstream InFile;
    InFile.open("input.txt");           
    InFile>>m>>n;
    ofstream OutFile("output.txt");
    if(m<0){
        OutFile<<"NO";          
        return 0;
    }
    if(n>=20){
        OutFile<<"NO";
        return 0;
    }
    int *mas1=new int[m];
    int *mas2=new int[n];
    for(int i=0; i<m; i++){
        InFile>>mas1[i];
        if(abs(mas1[i])>50000){
            OutFile<<"NO";
            return 0;
        }
    }
    for(int i=0; i<n; i++){
        InFile>>mas2[i];
        if(abs(mas1[i])>50000){
            OutFile<<"NO";
            return 0;
        }
    }
    int znach=0;    
    for(int i=0;i<m-n+1;i++){
        if (mas2[0]==mas1[i])
            for(int j=1;j<n;j++)
                if(mas2[j]!=mas1[j+i]){                 
                    znach=0;
                    break;
                }
                else{
                    znach=i;
                }
    }       
    if (znach)
        OutFile<<znach;
    else
        OutFile<<"NO";
    return 0;
}
Но данный код не проходит тестирование на контестере.
Помогите, пожалуйста, разобраться где я ошибся.

Добавлено через 13 минут
Вопрос закрыт, нашел таки ошибку, второй день не мог понять в чем дело, а написал здесь и сразу озарение пришло
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2013, 01:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив и подмассив (определить, является ли второй массив подмассивом первого) (C++):

с клавиатуры ввести массив,во второй массив записать нечетные элементы из первого - C++
с клавиатуры ввести массив,во второй записать нечетные элеиенты из первого.В третий массив записать четные элементы, стоящие на нечетных...

Одномерный массив. Найти наименьшие среди элементов первого массива, которые не входят во второй массив. - C++
Задано два массива. Найти наименьшие среди элементов первого массива, которые не входят во второй массив. Ни как не могу придумать:cry:, ...

Записать в третий массив все четные элементы первого массива, которые не входят во второй массив Исправить код - C++
Такая задача: 1) Записать в третий массив все четные элементы первого массива, которые не входят во второй массив. 2) Записать в третий...

Заполнить второй массив из первого в обратном порядке - C++
Задать два массива на 5 элементов каждый, заполнить 1ый массив (значениями), 2ой массив заполнить из 1го, но в обратном порядке.

Сформировать второй массив из случайно выбранных элементов первого - C++
Всем привет, будьте добры помогите разобраться с неокторым нюансом, а именно: 1 массив, 2-й массив формируется из случайно выбранных...

Заменить все вхождения первого символа в массив на второй символ - C++
Задан символьный массив и два символа. Замените все вхождения первого символа в массив на второй символ. Нужно до пятницы. Заранее спасибо.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2013, 01:06
Привет! Вот еще темы с ответами:

Найти минимальный из элементов первого массива, которые не входят во второй массив - C++
Одномерные массивы Даны два массива А и В из 20 вещественных чисел каждый. Найти min из элементов первого массива, которые не входят во...

Найти наименьшие среди элементов первого массива, которые не входят во второй массив - C++
Задано два массива. Найти наименьшие среди элементов первого мас-сива, которые не входят во второй массив. Но только без...

Повторяющиеся числа из первого массива занести во второй массив только один раз - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main(int argc, char* argv) { int...

Двумерный массив. Найти подмассив, имеющий наибольшую сумму элементов - C++
Задан двумерный массив целых чисел. Найдите подмассив, имеющий наибольшую сумму элементов. Например, для приведенного массива, это...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru