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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Сформировать матрицу по правилу http://www.cyberforum.ru/cpp-beginners/thread858873.html
1. Напишите программу формирования и вывода массива размером 6x3, каждые три последовательных элемента в строке которого составлены по следующему правилу: 1-й - равен случайному двузначному числу; 2-й - равен целой части от деления случайного трехзначного числа на сумму индексов текущею элемента; 3-й - равен остатку отделения случайного двузначного числа на 10.
C++ В двумерном массиве поменять строки, содержащие максимальный и минимальный элементы В двухмерном вещественном массиве поменять строки, содержащие максимальный и минимальный элементы Добавлено через 33 минуты В двухмерном вещественном массиве поменять строки, содержащие максимальный и минимальный элементы #include <iostream> #include <cstdlib> #include <ctime> #include <cmath> http://www.cyberforum.ru/cpp-beginners/thread858872.html
ошибки при построении проекта C++
Добрый вечер,уважаемые программисты,у меня возникли некие трудности с написанием программы,ибо я на Visual C++ можно сказать не работал,программа готова,но выдает ошибки,что посоветуете? #include<iostream> #include<stdio.h> #include<stdlib.h> #include"matrix.h" #include<time.h> using namespace std; int main() {
C++ Программа должна выводить аналог целочисленной таблицы умножения для дробей
Задача из учебника Р.Лафоре Доброго времени суток! Я изучаю С++ самостоятельно, по данному учебнику, столкнулся с задачей: Используйте преимущество ООП, заключающееся в том, что однажды созданный класс можно помещать в другие программы. Создайте новую программу, которая будет включать класс fraction, созданный в упражнении 11. Программа должна выводить аналог целочисленной таблицы умножения...
C++ Изменение цвета букв и фона в консоле http://www.cyberforum.ru/cpp-beginners/thread858854.html
Подскажите какие функции нужно использовать чтобы можно было закрашивать различным цветом слова и фон вокруг этих слов при выводе на экран?
C++ Сортировка (С++) Есть такое задание: Даны К целых чисел А(1),...,А(К). Вычислить а) наибольшее, b) наименьшее, c) наиболее близкое к нулю. Помогите пожалуйста! Есть решение для а) и b) подробнее

Показать сообщение отдельно
zabludshiy
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 34
08.05.2013, 01:06     Массив и подмассив (определить, является ли второй массив подмассивом первого)
Поставлена следующая задача:

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