Здравствуйте, такая задачка для олимпиады:
Предположим, что нам задана последовательность пар чисел (A [0], B [0]), (A [1], B [1]), ..., (A [n], B [n]) и Последовательность чисел C [0], C [1], ..., C [m]. Все элементы в последовательности A разные. Для каждого элемента C [k] последовательности C напечатайте элемент B [i], если существует такое i, что C [k] = A [i] или напечатайте число 0, если такого числа i не существует. Входные данные представляют собой целые числа - элементы последовательностей. Все числа разделены пробелами. Количество членов последовательностей неизвестно заранее. Первые числа являются элементами последовательности пар чисел (A [I], В [I]). Первые два числа - это элементы A [0] и B [0]. Второе два числа - это элементы A [1] и B [1] и т. Д. В конце последовательности пар есть число -1. -1 не является членом последовательности A или последовательности B или последовательности C. Следующие числа являются элементами последовательности C. В конце последовательности B есть число -1. -1 не является членом последовательности C. Выходные данные должны быть последовательностью, которая состоит из нулей и элементов последовательности B. Все числа должны быть разделены пробелом. Последовательность должна заканчиваться цифрой -1.
Написал данный код(Без библиотек STL), но всё равно проверка выдаёт что не правильно. В чем может быть проблема?
#include <iostream>
using namespace std;
int main()
{
int input;
int counter = 0, counterc=0;
int * A = NULL, *B = NULL, *C = NULL;
int * many_numbers;
while (1)
{
cin >> input;
if (input == -1)
break;
counter++;
many_numbers = (int*)realloc(A, counter * sizeof(int));
if (many_numbers != NULL)
{
A = many_numbers;
A[counter - 1] = input;
}
else
{
free(A);
std::cout << "Ошибка перевыделения памяти!";
exit(1);
}
cin >> input;
many_numbers = (int*)realloc(B, counter * sizeof(int));
if (many_numbers != NULL)
{
B = many_numbers;
B[counter - 1] = input;
}
else
{
free(B);
std::cout << "Ошибка перевыделения памяти!";
exit(1);
}
}
while(1)
{
std::cin >> input;
if (input == -1)
break;
counterc++;
many_numbers = (int*)realloc(C, counterc * sizeof(int));
if (many_numbers != NULL)
{
C = many_numbers;
C[counterc - 1] = input;
}
else
{
free(C);
std::cout << "Ошибка перевыделения памяти!";
exit(1);
}
}
input = 0;
for (auto i = 0; i < counterc; ++i)
{
if (i> counter)
cout << 0;
else
{
for (auto j = 0; j < counter; ++j)
{
if (C[i] == A[j])
input= B[i];
}
cout << input;
input = 0;
}
cout << " ";
}
cout << -1;
free(A);
free(B);
free(C);
return 0;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
LinuxПроект kaitai, файлы он сгенерировал, поэтому проблем с хедерами и вообще с кодом быть вроде не должно
Как перевести строку типа string s = "000000000000f8bf" в значение double? Я знаю как прочитать с файла такое значение, и правильно перевестиА как со строкой...
Нужно чтобы могли быть введены только русские или английские буквы в верхнем и нижнем регистре, а также символы пробел или дефис
Есть код, который добавляет переменную id в URL браузера при клике на кнопку