Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/32: Рейтинг темы: голосов - 32, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 18.12.2007
Сообщений: 5
1

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

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

Author24 — интернет-сервис помощи студентам
Дали задачу на курсовую, а я в С++ вообще балда, помогите задачку написать, плз!
Условие такое:
Нахождение общих элеменвто двух массивов.
Для двух массивов различной размерности найти элементы имеющие одинаковое значение и одинаковое по модулю значение. Вывести результаты на экран и записать в файл "output.txt".
Помогите, пожалуйста, буду очень благодарна.:'(:'(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2007, 12:34
Ответы с готовыми решениями:

Создать массив из общих элементов двух массивов
Здравствуйте!!!! Помогите, пожалуйста, с задачкой : Даны два массива: А и B , на основе которых...

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

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

Новый массив из общих элементов других массивов
Даны два массива: массив А из n элементов и массив В из m элементов. Сформируйте массив С,...

16
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
18.12.2007, 12:56 2
это точно задание на курсовую? по-моему, лаба обычная, позже по свободе наваяю
0
0 / 0 / 0
Регистрация: 18.12.2007
Сообщений: 5
18.12.2007, 16:44  [ТС] 3
Ну я первый курс. Да, задание на курсовую. Мне ещё уже в четверг сдавать, а я ещё ничего не делала...:huh:
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
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 / 0
Регистрация: 18.12.2007
Сообщений: 5
18.12.2007, 19:14  [ТС] 5
ПАСИБО золотой ты мой!! чмок чмок тебя....покажу своему преподу...
0
0 / 0 / 0
Регистрация: 18.12.2007
Сообщений: 5
20.12.2007, 14:10  [ТС] 6
извините, а не могли бы вы мне ещё помочь. Препод говорит программа писана на С++ а надо на С. Если есть свободное время, помогите пожалуйста.
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
20.12.2007, 14:22 7
Цитата Сообщение от Лена Посмотреть сообщение
извините, а не могли бы вы мне ещё помочь. Препод говорит программа писана на С++ а надо на С. Если есть свободное время, помогите пожалуйста.
а можно просветить, в чем же их отличия? что нельзя использовать?
0
38 / 9 / 6
Регистрация: 06.12.2007
Сообщений: 132
20.12.2007, 19:06 8
Думаю имеется ввиду, что нужно заменить cin и cout на scanf и printf.
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
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;
}
0
118 / 12 / 3
Регистрация: 21.08.2007
Сообщений: 222
23.12.2007, 11:36 10
Во-первых убрать <iostream> - это приплюснутый инклюд. Во-вторых - убрать оператор new. Для динамического выделения памяти в Си используется malloc(). В-третьих, Си, в отличие от С++, не позволяет обьявить переменную в теле цикла.
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
23.12.2007, 13:04 11
Цитата Сообщение от igor_nf Посмотреть сообщение
Во-первых убрать <iostream> - это приплюснутый инклюд. Во-вторых - убрать оператор new. Для динамического выделения памяти в Си используется malloc(). В-третьих, Си, в отличие от С++, не позволяет обьявить переменную в теле цикла.

я в глаза не видел компиляторов по си, у меня с++-компилер, вот и проги такие же... а на счет нет new, ты утверждаешь, что на си не было статических массивов?
0
118 / 12 / 3
Регистрация: 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 - у тебя сиплюснутый код, но не сишный.
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.12.2007, 16:27 13
Цитата Сообщение от igor_nf Посмотреть сообщение
new - это средство выделения памяти, которое имеет отношение только к С++ (в Сях такого нет). У Страуструпа это написано. Далее по поводу классов памяти. Может у нас разное понимание вещей... Статический класс памяти - количество блоков необходимой памяти заранее известно и может быть вычислено компилятором в момент компиляции. Блоки располагаются в специальной секции программы, которая называется секцией данных. Так это выглядит в Си:

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

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

понятно, ну тогда переделаю под си, спасибо за информацию...
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
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;
}
0
Флудер
195 / 33 / 11
Регистрация: 23.03.2007
Сообщений: 334
19.03.2008, 06:04 15
Цитата Сообщение от igor_nf Посмотреть сообщение
Си, в отличие от С++, не позволяет обьявить переменную в теле цикла.
в стандарте с99 позволяет.
0
118 / 12 / 3
Регистрация: 21.08.2007
Сообщений: 222
19.03.2008, 15:47 16
в стандарте с99 позволяет.
Верно, до стандартов то я и не дошёл ).
0
Флудер
195 / 33 / 11
Регистрация: 23.03.2007
Сообщений: 334
19.03.2008, 20:06 17
abs - в stdlib.h, так что можно math.h не подключать.
0
19.03.2008, 20:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2008, 20:06
Помогаю со студенческими работами здесь

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

Нахождение общих элементов двух массивов
Здравствуйте . Возникла проблема с нахождением общих элементов 2-х массивов: string mas1 =...

Найти НОД общих элементов двух массивов
Как найти НОД(наибольший общий делитель) общих элементов массивов .Благодарю за ответ ...

Написать функцию находящую количество общих элементов двух массивов
Даны два массива целых чисел упорядоченные по невозрастанию. Написать функцию находящую количество...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru