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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.63
Лена
0 / 0 / 0
Регистрация: 18.12.2007
Сообщений: 4
#1

Нахождение общих элементов двух массивов - C++

18.12.2007, 12:34. Просмотров 3844. Ответов 16
Метки нет (Все метки)

Дали задачу на курсовую, а я в С++ вообще балда, помогите задачку написать, плз!
Условие такое:
Нахождение общих элеменвто двух массивов.
Для двух массивов различной размерности найти элементы имеющие одинаковое значение и одинаковое по модулю значение. Вывести результаты на экран и записать в файл "output.txt".
Помогите, пожалуйста, буду очень благодарна.:'(:'(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2007, 12:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нахождение общих элементов двух массивов (C++):

Работа с массивами в С++ . Поиск общих элементов двух массивов - C++
Здравствуйте! Есть такой у меня код . #include "stdafx.h" #include <iostream> #include <conio.h> #include <fstream> using...

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

Построить вектор из общих элементов двух векторов - C++
Помогите с написание программы, нет идей вообще :( Задано два вектора действительных чисел х и у, каждый из которых имеет n элементов....

Нахождение суммы общих делителей чисел - C++
помогите плз: Даны натуральные числа n, m. Получить сумму их общих делителей.

Одномерные массивы: нахождение элементов массивов X и Y, пользуясь формулами - C++
Добрый вечер помогите с заданием по лабораторной (((( если можно на максимально простом уровне Заранее благодарю за помощь ...

Нахождение двух наибольших элементов - C++
Пользователь вводит с клавиатуры последовательность чисел. Программе необходимо найти и вывести на экран два наибольших из них. Пример:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,883
Завершенные тесты: 1
18.12.2007, 12:56 #2
это точно задание на курсовую? по-моему, лаба обычная, позже по свободе наваяю
Лена
0 / 0 / 0
Регистрация: 18.12.2007
Сообщений: 4
18.12.2007, 16:44  [ТС] #3
Ну я первый курс. Да, задание на курсовую. Мне ещё уже в четверг сдавать, а я ещё ничего не делала...:huh:
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,883
Завершенные тесты: 1
18.12.2007, 18:07 #4
ну что-то вроде этого....
Код
#include <iostream>
#include <math.h>
#include <stdio.h>
int main()
{
   int *arr1;
   int *arr2;
   int n = 0, k = 0;
   std::cout << "Enter razmer first array!" << std::endl;
   std::cin >> n;
   arr1 = new int[n];
   std::cout << "Enter array!" << std::endl;
   for(int i = 0; i < n; i++) std::cin >>arr1[i];
   std::cout << "Enter razmer second array!" << std::endl;
   std::cin >> k;
   arr2 = new int[k];
   std::cout << "Enter array!" << std::endl;
    FILE *stream;
    stream = fopen("Out.txt", "w+");
   for(int i = 0; i < k; i++) std::cin >>arr2[i];
   // Vivod
   printf("Result:\n");
   fprintf(stream, "Result:\n");
   printf(" eql:\n");
   for(int i = 0; i < n; i++){
      for(int j = 0; j < k; j++){
        if(arr1[i] == arr2[j]){
          printf("  a1[%d] = a2[%d]\n", i, j);
          fprintf(stream, "  a1[%d] = a2[%d]\n", i, j);
        }
      }
   }
   printf(" abs:\n");
   fprintf(stream, "abs:\n");
   for(int i = 0; i < n; i++){
      for(int j = 0; j < k; j++){
        if(abs(arr1[i]) == abs(arr2[j])){
          printf("  a1[%d] = a2[%d]\n", i, j);
          fprintf(stream, "  a1[%d] = a2[%d]\n", i, j);
        }
      }
    }
    fclose(stream);
   return 0;
}
Лена
0 / 0 / 0
Регистрация: 18.12.2007
Сообщений: 4
18.12.2007, 19:14  [ТС] #5
ПАСИБО золотой ты мой!! чмок чмок тебя....покажу своему преподу...
Лена
0 / 0 / 0
Регистрация: 18.12.2007
Сообщений: 4
20.12.2007, 14:10  [ТС] #6
извините, а не могли бы вы мне ещё помочь. Препод говорит программа писана на С++ а надо на С. Если есть свободное время, помогите пожалуйста.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,883
Завершенные тесты: 1
20.12.2007, 14:22 #7
Цитата Сообщение от Лена Посмотреть сообщение
извините, а не могли бы вы мне ещё помочь. Препод говорит программа писана на С++ а надо на С. Если есть свободное время, помогите пожалуйста.
а можно просветить, в чем же их отличия? что нельзя использовать?
./run
38 / 10 / 2
Регистрация: 06.12.2007
Сообщений: 133
20.12.2007, 19:06 #8
Думаю имеется ввиду, что нужно заменить cin и cout на scanf и printf.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,883
Завершенные тесты: 1
21.12.2007, 09:38 #9
ну тогда вот тебе другой вариант, хотя могла бы и сама заменить, все-таки на программера учишься:
Код
#include <iostream>
#include <math.h>
#include <stdio.h>
int main()
{
   int *arr1;
   int *arr2;
   int n = 0, k = 0;
   printf("Enter razmer first array:");
   scanf("%d", &n);
   arr1 = new int[n];
   printf("\nEnter array:\n");
   for(int i = 0; i < n; i++) scanf("%d", &arr1[i]);
   printf("\nEnter razmer second array:");
   scanf("%d", &k);
   arr2 = new int[k];
   printf("\nEnter array:\n");
   for(int i = 0; i < k; i++) scanf("%d", &arr2[i]);
    FILE *stream;
    stream = fopen("Out.txt", "w+");
   // Vivod
   printf("Result:\n");
   fprintf(stream, "Result:\n");
   printf(" eql:\n");
   for(int i = 0; i < n; i++){
      for(int j = 0; j < k; j++){
        if(arr1[i] == arr2[j]){
          printf("  a1[%d] = a2[%d]\n", i, j);
          fprintf(stream, "  a1[%d] = a2[%d]\n", i, j);
        }
      }
   }
   printf(" abs:\n");
   fprintf(stream, "abs:\n");
   for(int i = 0; i < n; i++){
      for(int j = 0; j < k; j++){
        if(abs(arr1[i]) == abs(arr2[j])){
          printf("  a1[%d] = a2[%d]\n", i, j);
          fprintf(stream, "  a1[%d] = a2[%d]\n", i, j);
        }
      }
    }
    fclose(stream);
   return 0;
}
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
23.12.2007, 11:36 #10
Во-первых убрать <iostream> - это приплюснутый инклюд. Во-вторых - убрать оператор new. Для динамического выделения памяти в Си используется malloc(). В-третьих, Си, в отличие от С++, не позволяет обьявить переменную в теле цикла.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,883
Завершенные тесты: 1
23.12.2007, 13:04 #11
Цитата Сообщение от igor_nf Посмотреть сообщение
Во-первых убрать <iostream> - это приплюснутый инклюд. Во-вторых - убрать оператор new. Для динамического выделения памяти в Си используется malloc(). В-третьих, Си, в отличие от С++, не позволяет обьявить переменную в теле цикла.

я в глаза не видел компиляторов по си, у меня с++-компилер, вот и проги такие же... а на счет нет new, ты утверждаешь, что на си не было статических массивов?
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
24.12.2007, 12:15 #12
Цитата Сообщение от WooDooMan666 Посмотреть сообщение
я в глаза не видел компиляторов по си, у меня с++-компилер, вот и проги такие же... а на счет нет new, ты утверждаешь, что на си не было статических массивов?
new - это средство выделения памяти, которое имеет отношение только к С++ (в Сях такого нет). У Страуструпа это написано. Далее по поводу классов памяти. Может у нас разное понимание вещей... Статический класс памяти - количество блоков необходимой памяти заранее известно и может быть вычислено компилятором в момент компиляции. Блоки располагаются в специальной секции программы, которая называется секцией данных. Так это выглядит в Си:

Код
static char arr[1024];      //    резервирует килобайт в секции .data
Динамический класс памяти - количество блоков памяти заранее неизвестно и станет известно только в момент выполнения программы. Для этого, если мы пишем на Си - используем malloc(), а если мы пишем на C++ - используем new[]. Достоверной разницы в механизмах работы этих средств я не знаю, но Страуструп пишет, что если есть возможность использовать new, то лучше использовать new вместо malloc().

К теме: поэтому, если ты используешь new - у тебя сиплюснутый код, но не сишный.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,883
Завершенные тесты: 1
24.12.2007, 16:27 #13
Цитата Сообщение от igor_nf Посмотреть сообщение
new - это средство выделения памяти, которое имеет отношение только к С++ (в Сях такого нет). У Страуструпа это написано. Далее по поводу классов памяти. Может у нас разное понимание вещей... Статический класс памяти - количество блоков необходимой памяти заранее известно и может быть вычислено компилятором в момент компиляции. Блоки располагаются в специальной секции программы, которая называется секцией данных. Так это выглядит в Си:

Код
static char arr[1024];      //    резервирует килобайт в секции .data
Динамический класс памяти - количество блоков памяти заранее неизвестно и станет известно только в момент выполнения программы. Для этого, если мы пишем на Си - используем malloc(), а если мы пишем на C++ - используем new[]. Достоверной разницы в механизмах работы этих средств я не знаю, но Страуструп пишет, что если есть возможность использовать new, то лучше использовать new вместо malloc().

К теме: поэтому, если ты используешь new - у тебя сиплюснутый код, но не сишный.

понятно, ну тогда переделаю под си, спасибо за информацию...
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,883
Завершенные тесты: 1
24.12.2007, 16:36 #14
Надеюсь, это уже больше похоже на си:
Код
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
   int *arr1;
   int *arr2;
   int n = 0, k = 0;
   printf("Enter razmer first array:");
   scanf("%d", &n);
   arr1 = (int*) malloc(n * sizeof(int));
   printf("\nEnter array:\n");
   for(int i = 0; i < n; i++) scanf("%d", &arr1[i]);
   printf("\nEnter razmer second array:");
   scanf("%d", &k);
   arr2 = (int*) malloc(k * sizeof(int));
   printf("\nEnter array:\n");
   for(int i = 0; i < k; i++) scanf("%d", &arr2[i]);
    FILE *stream;
    stream = fopen("Out.txt", "w+");
   // Vivod
   printf("Result:\n");
   fprintf(stream, "Result:\n");
   printf(" eql:\n");
   for(int i = 0; i < n; i++){
      for(int j = 0; j < k; j++){
        if(arr1[i] == arr2[j]){
          printf("  a1[%d] = a2[%d]\n", i, j);
          fprintf(stream, "  a1[%d] = a2[%d]\n", i, j);
        }
      }
   }
   printf(" abs:\n");
   fprintf(stream, "abs:\n");
   for(int i = 0; i < n; i++){
      for(int j = 0; j < k; j++){
        if(abs(arr1[i]) == abs(arr2[j])){
          printf("  a1[%d] = a2[%d]\n", i, j);
          fprintf(stream, "  a1[%d] = a2[%d]\n", i, j);
        }
      }
    }
    fclose(stream);
    free(arr1);
    free(arr2);
   return 0;
}
Ensase
Флудер
191 / 29 / 5
Регистрация: 23.03.2007
Сообщений: 335
19.03.2008, 06:04 #15
Цитата Сообщение от igor_nf Посмотреть сообщение
Си, в отличие от С++, не позволяет обьявить переменную в теле цикла.
в стандарте с99 позволяет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2008, 06:04
Привет! Вот еще темы с ответами:

Объявить массив не более чем 15 элементов. Вывести обратные по модулю величины и проверить изменились ли адреса элементов этих двух массивов. - C++
Объявить массив не более чем 15 элементов. Вывести обратные по модулю величины и проверить изменились ли адреса элементов этих двух...

Перенос элементов из двух массивов - C++
есть код программы который написал сам, но до конца не выходит, кто может помогите мне. само задание вот: Программа должна создать два...

Сравнение элементов двух массивов - C++
#include &lt;iostream&gt;; #include &lt;iostream&gt; #include&lt;locale&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Rus&quot;); int a; ...

Сравнение элементов двух двумерных массивов - C++
Прошу помощи в написании данной задачи. Написал сам все что мог, выдает ошибку error C2447: '{' : missing function header (old-style formal...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.03.2008, 06:04
Ответ Создать тему
Опции темы

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