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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2010, 09:52   #11
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Crudelis Посмотреть сообщение
У меня выводит 1 2
Обнуление k во внутреннем цикле убрали Уже лучше... Тогда пошли дальше...
Код:
void main() {

    int a[3] = {1, 2, 3}; 
    int b[2] = {1, 2};
    int c[5];
    int i, j, k=0;
    for ( i=0; i<3; i++ ) {
        for ( j=0; j<2; j++) {
            if ( a[i] == b[j] ) {
                c[k]=a[i];
                k++;
            }
        }
    }

    if ( k == 0)
        cout << "c[] is empty" << endl;
    else {
        for ( i = 0; i < k; i++)
            cout << c[i] << " ";
        cout << endl;
    }

}
Правильно я понял? Мы только возьмём
Код:
int a[3] = {1, 2, 3}; 
int b[2] = {1, 1};
Почему в массиве c[] оказываются две "единицы"?!
Vago вне форума Ответить с цитированием
Старый 09.04.2010, 12:14   #12
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Crudelis,Vago,тут С, а не С++(потоки не используются).

Во 2-ом посте написал полностью рабочий код. Чем не устраивает?
Повторюсь:
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h> 
int main ()
{
    int a[10],b[10],c[10],na,nb,nc=0,i,j,z,ext;
	printf("dlina massiva a:"); scanf("%d",&na);
	printf("vvedite massiv a\n");
	for (i=0;i<na;i++) scanf("%d",&a[i]);
	printf("dlina massiva b:"); scanf("%d",&nb);
	printf("vvedite massiv b\n");
    for (i=0;i<nb;i++)
	{
		scanf("%d",&b[i]);
		for(j = 0; j < na; j++)
			if(b[i] == a[j])
			{
				for(z = 0,ext = 0; z < nc; z++)
					if(c[z] == b[i])
					{
						ext = 1;
						break;
					}
				if(!ext)
					c[nc++] = b[i];
				break;
			}
	}
	if (nc==0)
		printf("massiv c pyst\n");
	else 
	{
		printf("massiv C\n");
		for (i=0;i<nc;i++)
			printf("%7d",c[i]);
		printf("\n");
	}
 system("PAUSE");
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 09.04.2010, 12:50   #13
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Ozerich Посмотреть сообщение
...Vago,тут С, а не С++(потоки не используются).
Ну не используются, так не используются...
Код:
void main() {

    int a[3] = {1, 2, 3}; 
    int b[2] = {1, 2};
    int c[5];
    int i, j, k=0;
    for ( i=0; i<3; i++ ) {
        for ( j=0; j<2; j++) {
            if ( a[i] == b[j] ) {
                c[k]=a[i];
                k++;
            }
        }
    }
    if ( k == 0)
        printf( "c[] is empty" );
    else {
        for ( i = 0; i < k; i++)
        printf( "%d ", c[i] );
    }
    printf( "\n" );

}
Вопрос к Crudelis'у. Возьмём
Код:
int a[3] = {1, 2, 3}; 
int b[2] = {1, 1};
Почему в массиве c[] оказываются две "единицы"?

...

Ozerich, то, что Ваша программа - рабочая, я знаю и без повторения Мне сейчас, просто, интересно, с какой попытки ещё один участник обсуждения, написавший "Все делается намного проще ... и всё" (выделено мною, Vago ) напишет, всё-таки, правильный фрагмент? Любопытство пожилого человека, присевшего отдохнуть на край песочницы, не более... Пока что попыток четыре, и фрагмент по-прежнему с ошибками...
Vago вне форума Ответить с цитированием
Старый 09.04.2010, 14:01   #14
Crudelis
Пользователь
 
Аватар для Crudelis
 
Регистрация: 05.04.2010
Сообщений: 56
По умолчанию

void main()
{
int a[3] = {1, 2, 3};
int b[2] = {1, 1};
int c[5];
int i, j, k=0;
for ( i=0; i<3; i++ )
{
for ( j=0; j<2; j++)
{
if ( a[i] == b[j] )
{
for(int t=0,d=0;t<5;t++)
{
if(c[t]==b[j])
{
d++;
break;
}
if(!d)
{
c[k]=b[j];
k++;
break;

}
}
}
}
}
if ( k == 0)
cout << "c[] is empty" << endl;
else {
for ( i = 0; i < k; i++)
cout << c[i] << " ";
cout << endl;
}
}

Стыряно у Ozerich
сout<<"Изучаю программирование" точка с запятой
Crudelis вне форума Ответить с цитированием
Старый 09.04.2010, 14:05   #15
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Crudelis,Форматированию кода для начала научись и код выделять в тег [CODE] надо.
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 09.04.2010, 14:26   #16
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Crudelis Посмотреть сообщение
...
for(int t=0,d=0;t<5;t++)
{
if(c[t]==b[j])
...
Стыряно у Ozerich

c[] ведь пуст сначала...

...

Ладно, удачи всем на профессиональном поприще!..
Vago вне форума Ответить с цитированием
Старый 09.04.2010, 15:01   #17
Crudelis
Пользователь
 
Аватар для Crudelis
 
Регистрация: 05.04.2010
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Ozerich Посмотреть сообщение
Crudelis,Форматированию кода для начала научись и код выделять в тег [CODE] надо.
В вижуал студии он у меня отформатирован был, про [code] не знал, спасибо

Цитата:
c[] ведь пуст сначала...
Конечно пуст, но какая разница, пробежит проверка по всему массиву или нет, массив то маленький всего 5 значений, а не 255, вот если бы большой был то тогда можно было сделать for(int t=0;t<k;t++)
сout<<"Изучаю программирование" точка с запятой
Crudelis вне форума Ответить с цитированием
Старый 09.04.2010, 15:02   #18
Crudelis
Пользователь
 
Аватар для Crudelis
 
Регистрация: 05.04.2010
Сообщений: 56
По умолчанию

З.ы. я С++ учу 3й месяц, студент
сout<<"Изучаю программирование" точка с запятой
Crudelis вне форума Ответить с цитированием
Старый 09.04.2010, 15:14   #19
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Crudelis Посмотреть сообщение
Конечно пуст, но какая разница, пробежит проверка по всему массиву или нет, массив то маленький всего 5 значений, а не 255, вот если бы большой был то тогда можно было сделать for(int t=0;t<k;t++)
Да ХОТЬ ОДИН!! Дело ж не во временнЫх затратах, а в том, что Вы выполняете сравнение с эл-тами (c[0], c[1],.. , c[4]), которые НЕ ОПРЕДЕЛЕНЫ!
Vago вне форума Ответить с цитированием
Старый 10.04.2010, 14:42   #20
MalerX
Новичок
Джуниор
 
Аватар для MalerX
 
Регистрация: 10.04.2010
Сообщений: 1
По умолчанию Исправлено.

Вот моя версия программы, только на С++ (должна и в си работать):
Код:
int _tmain()
{
	int a[10],b[10];
        int z=0;
        for (int i = 0; i < 10; i++) {
            cout<<"Vvedi "<<(i+1)<<" a= ";
            cin>>a[i];
            cout<<"\tVvedi "<<(i+1)<<" b= ";
            cin>>b[i];
        }
        for (int i = 0; i < 10; i++) {
        	for (int j = 0; j < 10; j++) {
                    if (a[i]==b[j]) {
                        z++;
                        break;
                    }else;
                }

        }
        int *c=new int[z];
        for (int i = 0; i < 10; i++) {
        	for (int j = 0; j < 10; j++) {
                    if (a[i]==b[j]) {
                        c[i]=a[i];
                        break;
                    }else;
                }

        }
        for (int i = 0; i < z; i++) {
        	cout<<c[i]<<"\n";
        }
        cin.get();
        cin.get();
	return 0;
}
Я попыталься реализовать сравнение элементов не только с одинаковыми индексами. Вроде работает.

Последний раз редактировалось MalerX; 10.04.2010 в 14:45. Причина: Тег зыбыл поставить.
MalerX вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с одномерным массивом и сортирокой Nitriyc Помощь студентам 0 22.11.2009 14:24
работа с одномерным массивом _Solomon_ Помощь студентам 1 07.06.2007 12:06