0 / 0 / 0
Регистрация: 18.12.2007
Сообщений: 5
|
|
1 | |
Нахождение общих элементов двух массивов18.12.2007, 12:34. Показов 5841. Ответов 16
Метки нет (Все метки)
Дали задачу на курсовую, а я в С++ вообще балда, помогите задачку написать, плз!
Условие такое: Нахождение общих элеменвто двух массивов. Для двух массивов различной размерности найти элементы имеющие одинаковое значение и одинаковое по модулю значение. Вывести результаты на экран и записать в файл "output.txt". Помогите, пожалуйста, буду очень благодарна.:'(:'(
0
|
18.12.2007, 12:34 | |
Ответы с готовыми решениями:
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 |
я в глаза не видел компиляторов по си, у меня с++-компилер, вот и проги такие же... а на счет нет new, ты утверждаешь, что на си не было статических массивов?
0
|
118 / 12 / 3
Регистрация: 21.08.2007
Сообщений: 222
|
|
24.12.2007, 12:15 | 12 |
new - это средство выделения памяти, которое имеет отношение только к С++ (в Сях такого нет). У Страуструпа это написано. Далее по поводу классов памяти. Может у нас разное понимание вещей... Статический класс памяти - количество блоков необходимой памяти заранее известно и может быть вычислено компилятором в момент компиляции. Блоки располагаются в специальной секции программы, которая называется секцией данных. Так это выглядит в Си:
Код
static char arr[1024]; // резервирует килобайт в секции .data К теме: поэтому, если ты используешь new - у тебя сиплюснутый код, но не сишный.
0
|
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
24.12.2007, 16:27 | 13 |
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 |
0
|
118 / 12 / 3
Регистрация: 21.08.2007
Сообщений: 222
|
|
19.03.2008, 15:47 | 16 |
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 | |
19.03.2008, 20:06 | |
Помогаю со студенческими работами здесь
17
Построить вектор из общих элементов двух векторов Нахождение общих элементов двух массивов Найти НОД общих элементов двух массивов Написать функцию находящую количество общих элементов двух массивов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |