Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2014, 21:37   #1
kyber
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 11
По умолчанию Даны массивы A,B. Вычислить элементы одномерного массив С из положительных чисел массива A, присутствующих в массиве B один раз(С)

Даны два одномерных массива целых чисел A и В. Вычислить одномерный
массив С, который содержит Положительные элементы массива A, присутствующие в массиве B 1 раз.(используются функции cin и cout, а для обращения к элементам массива используется указатель.)
Код:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, ".1251");
int a[10],b[10],c[10],na, nb, nc=0,k=0, *ua, *ub, *uc ;
//na, nb, nc-длины массивов a,b,c
cout << "введите длину массива А:"; cin >> na;
cout << "введите массив А" << endl;
for (ua=a;ua<a+na;ua++) cin >> *ua;
cout << "введите длину массива B:"; cin >> nb;
cout << "введите массив B" << endl;
for (ub=b;ub<b+nb;ub++) cin >> *ub;
for(ua=a;ua<a+na;ua++)
if (*ua > 0)
    {
    for(ub=b,k=0;ub<b+nb&&k<2;ub++);
        if (*ua==*ub)
        k++;
    if (k==1)
    {
        nc++;
        *uc++=*ua;
    }
}
//вывод результата
if (nc==0)
cout << "массив C пуст" << endl;
else
{
cout << "Массив C" << endl;
for(uc=c;uc<c+nc;uc++)
cout << *uc << " ";
cout << endl;
}
return 0;
}

Последний раз редактировалось Stilet; 08.02.2014 в 22:08.
kyber вне форума Ответить с цитированием
Старый 08.02.2014, 22:00   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Код:
for(ub=b,k=0;ub<b+nb&&k<2;ub++);
Пустой цикл
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 08.02.2014, 22:14   #3
kyber
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 11
По умолчанию

то есть он там не нужен?или он не правильный?
kyber вне форума Ответить с цитированием
Старый 08.02.2014, 22:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вычислить одномерный
массив С, который содержит Положительные элементы массива A, присутствующие в массиве B 1 раз.
Код:
int count(int *a,int n,int v){int l=0;for(int i=0;i<n;i++) l+=(a[i]==v)?1:0; return l-1;}
...
{
Тут вводим массивы А и В
...
 int k=0;
 for(int i=0;i<10;i++){
  if(!count(&b,10,a[i]) c[k++]=a[i];
 }
 for(int i=0;i<k;i++) printf("%d\t",c[i]);
...
}
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.02.2014, 22:23   #5
kyber
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 11
По умолчанию

а мой цикл как нибудь исправить можно?
kyber вне форума Ответить с цитированием
Старый 08.02.2014, 22:28   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может и да, но мне сложно его понять оказалось.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.02.2014, 22:32   #7
kyber
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 11
По умолчанию

просто так как написал ты,мы так не делали..Нам нужно сделать с указателями..
kyber вне форума Ответить с цитированием
Старый 09.02.2014, 00:36   #8
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
то есть он там не нужен?или он не правильный?
Я откуда знаю, что вы этим циклом сделать хотели?.. Просто выглядит он по окружающему коду странно, если вы просто хотели сдвинуть указатель на Н необязательно было организовывать цикл на +1 Нраз.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 09.02.2014, 01:09   #9
kyber
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 11
По умолчанию

а как лучше сделать?помогите,пожалуйста,доделат ь
kyber вне форума Ответить с цитированием
Старый 09.02.2014, 17:46   #10
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

тебе написал компилятор - использована неинициализированная локальная переменная "uc"
косяк в твоей программе:
Ты разыменовываешь псевдоним указателя который не на что не ссылается!

Код:
    if (k==1)
    {
        nc++;
        *uc++=*ua;
    }
ну и там еще один косяк у тебя с пустым циклом(напутал с точкой запятой и фигурными скобками)

не правильно :
Код:
   for(ub=b,k=0;ub<b+nb&&k<2;ub++);
        if (*ua==*ub)
        k++;
Правильно:
Код:
 for(ub=b,k=0;ub<b+nb&&k<2;ub++)
	{
        if (*ua==*ub)
        k++;
	}
вот правильная программа:
Код:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, ".1251");
int a[10],b[10],c[10],na, nb, nc=0,k=0, *ua, *ub, *uc=c; // теперь твой псевдоним ссылается туда, куда надо.
//na, nb, nc-длины массивов a,b,c
cout << "введите длину массива А:"; cin >> na;
cout << "введите массив А" << endl;
for (ua=a;ua<a+na;ua++) cin >> *ua;
cout << "введите длину массива B:"; cin >> nb;
cout << "введите массив B" << endl;
for (ub=b;ub<b+nb;ub++) cin >> *ub;
for(ua=a;ua<a+na;ua++)
if (*ua > 0)
{
    for(ub=b,k=0;ub<b+nb&&k<2;ub++)
	{
        if (*ua==*ub)
        k++;
	}
    if (k==1)
    {
        nc++;
        *uc++=*ua;
    }
}
//вывод результата
if (nc==0)
cout << "массив C пуст" << endl;
else
	{
	cout << "Массив C" << endl;
	for(uc=c;uc<c+nc;uc++)
	cout << *uc << " ";
	cout << endl;
	}
return 0;
}

Последний раз редактировалось alekopoko; 09.02.2014 в 17:50.
alekopoko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны целочисленные массивы A[1..n] и B[1..m]. Найти какие элементы массива В присутствуют в массиве А S.I.D. Помощь студентам 0 14.01.2013 10:57
Сформировать новый массив, содержащий повторяющиеся элементы массива A. Элементы в новом массиве не повторяются(Pascal) mad_putin Помощь студентам 0 13.12.2012 00:09
Вычислить сумму всех положительных чисел одномерного массива (программа на алгоритмическом языке) ВиталийА Помощь студентам 8 01.10.2012 00:28
Заданы массивы А(15).В(17),С(10),состоящие из положительных и отрицательных чисел. Определить в каком массиве,больше четных чисел. Richik123 Паскаль, Turbo Pascal, PascalABC.NET 1 19.06.2012 12:24
Получить массив из элементов, встречающихся в исходном массиве ровно один раз без повторений Shikarmo4000 Помощь студентам 0 25.05.2010 01:27