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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2020, 17:39   #11
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Всем привет!Завис еще над одной программкой не получается пока что .Подскажите в чем ошибка?
По условию программа строит два массива чисел и программа должна писать числа находящиеся только в одном из массивов.
a[] = {1,2,2,3,4,6,2,7,8,9,9,9,9,9,2,3,4, 6,2,9};
b[] = {2,2,2,3,4,5,7,8,9,7,12,23,4,5,5,5, 5,4,4,7};
те программа должна напечатать 1,5,6,12,23 .В программа нельзя использовать указатели и функции.
Код:
#include <stdio.h>
int main(void)
{
	int a[] = {1,2,2,3,4,6,2,7,8,9,9,9,9,9,2,3,4,6,2,9};
	int b[] = {2,2,2,3,4,5,7,8,9,7,12,23,4,5,5,5,5,4,4,7};
	int c[20];
	int i,j,k=0;
	for (i = 0;i < 20;i++)
		for (j = 0;j < 20;j++)
		{
			if ((a[i] == b[j])||(a[i]==a[j]&&i!=j)||(b[i] == b[j]&&i!=j ))
				break;
		else if(a[i]!=b[j])
				c[k] = a[i];
		    	k++;
		    	c[k] = b[j];
			    k++;
			}
	for (k = 0;k <=20;k++)
	printf("%d ",c[k]);
		return 0;
}
Alexalex777 вне форума Ответить с цитированием
Старый 04.05.2020, 19:12   #12
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(void)
{
    int a[] = {1,2,2,3,4,6,2,7,8,9,9,9,9,9,2,3,4,6,2,9};
    int b[] = {2,2,2,3,4,5,7,8,9,7,12,23,4,5,5,5,5,4,4,7};
    int c[40];
    int i, j, k = 0;
    bool skip_a, skip_b;
    for (i = 0; i < 20; i++) {
        skip_a = false;
        skip_b = false;
        for (j = 0; j < 20; j++) {
            skip_a = skip_a || (a[i] == b[j]) || (a[i] == a[j] && i > j);
            skip_b = skip_b || (b[i] == a[j]) || (b[i] == b[j] && i > j);
            if (skip_a && skip_b)
                break;
        }
        //printf("i = %d: a = %d (%d) b = %d (%d)\n", i, a[i], skip_a, b[i], skip_b);
        if (!skip_a) {
            //printf("save a %d\n", a[i]);
            c[k] = a[i];
            k++;
        }
        if (!skip_b) {
            //printf("save b %d\n", b[i]);
            c[k] = b[i];
            k++;
        }
    }
    for (i = 0; i < k; i++)
        printf("%d ", c[i]);
    return 0;
}
1) Делайте более аккуратно выравнивание кода, чтобы не запутаться.
2) Если все числа в массивах будут уникальными, то понадобится 40 мест.
3) Пока внутренний цикл по j не закончился, нельзя добавлять ничего в массив c.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 06.05.2020, 16:02   #13
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

BDA Спасибо! Еще немного переделал программу поменял bool на флаги.
Код:
#include <stdio.h>
int main(void)
{
	int a[] = { 1,2,2,3,4,6,2,7,8,9,9,9,9,9,2,3,4,6,2,9 };
	int b[] = { 2,2,2,3,4,5,7,8,9,7,12,23,4,5,5,5,5,4,4,7 };
	int c[40];
	int i, j, k = 0,flaga = 0, flagb = 0;
	for (i = 0; i < 20; i++) 
     {
		flaga = 0;flagb = 0;
		for (j = 0; j < 20; j++)
		{
			flaga = flaga || (a[i] == b[j]) || (a[i] == a[j] && i > j);
			flagb = flagb || (b[i] == a[j]) || (b[i] == b[j] && i > j);
			if (flaga && flagb)
				break;
		}
		if (!flaga) 
		  {
			c[k] = a[i];
			k++;
		  }
		if (!flagb)
		 {
		       c[k] = b[i];
		       k++;
		 }
    }
	for (i = 0; i < k; i++)
		printf("%d ", c[i]);
	return 0;
}
Alexalex777 вне форума Ответить с цитированием
Старый 06.05.2020, 16:13   #14
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Еще одну задачу решаю
Нужно из двух массивов написать число которое чаще всего встречается и сколько раз.Неправильно количество чисел считается если убираю или добавляю самые распространенный числа в массив.
Код:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
	int a[] = { 1,2,1,3,2,6,2,7,8,9,9,9,9,9,2,3,4,6,2,9 };
	int b[] = { 2,2,3,3,3,5,7,8,9,1,12,23,4,5,5,5,5,4,4,7 };
	int i,j;
	int count1 = 1, max1 = 1,num1;
	int count2 = 1, max2 = 1, num2;
	for (i = 0; i <= 20; i++)
		for (j = 0; j <= 20; j++)
		{
		   if (a[i] == a[j] && i >j)
			{
				      count1++;
				if (count1 > max1)
			             {
					max1 = count1;
					num1 = a[i];
			               }
			}
	          	else
	                	count1 = 1;
			if (b[i] == b[j] && i > j)
			{
				        count2++;
				if (count2 > max2)
			        	{
			 		max2 = count2;
					num2 = b[i];
				        }
			}
			else
				count2 = 1;
		}
	         if(max1>max2)
		             printf("count=%d num=%d",max1,num1);
	         else 
		             printf("count2=%d num2=%d",max2,num2);
	return 0;
}

Последний раз редактировалось Alexalex777; 06.05.2020 в 18:38.
Alexalex777 вне форума Ответить с цитированием
Старый 06.05.2020, 18:40   #15
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Код:
#include <stdio.h>
int main(void)
{
	int a[] = { 1,2,4,3,2,6,3,7,8,9,9,9,9,9,1,3,4,6,3,9 };
	int b[] = {2,2,3,9,3,5,7,8,7,1,12,23,4,5,5,5,5,4,4,7 };
	int c[40];
	int i,j;
	int count = 1, max = 1,num;
		for (i = 0; i <= 20; i++)
			for (j = 0; j <= 20; j++)
		{
			if ((a[i] == b[j])||(a[i] == a[j]&&i!=j)|| (b[i] == b[j]&&i!=j))
			{
				count++;
				if (count > max)
				{
					max = count;
					num = a[i];
				}
			}
					else
				count = 1;
		}
			printf("count=%d num=%d",max,num);
	return 0;
}
Вариант получше но тоже с ошибкой
Alexalex777 вне форума Ответить с цитированием
Старый 06.05.2020, 18:41   #16
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
    int count1, max1 = -1, num1;
    int count2, max2 = -1, num2;
    for (i = 0; i < 20; i++) {
        count1 = 0;
        count2 = 0;
        for (j = 0; j < 20; j++) {
            count1 += a[i] == a[j];
            count2 += b[i] == b[j];
        }
        if (count1 > max1) {
            max1 = count1;
            num1 = a[i];
        }
        if (count2 > max2) {
            max2 = count2;
            num2 = b[i];
        }
    }
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 06.05.2020 в 18:44.
BDA вне форума Ответить с цитированием
Старый 06.05.2020, 19:24   #17
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Код:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
	int a[] = { 1,2,1,3,4,6,2,7,8,9,9,9,9,9,2,3,4,6,2,9 };
	int b[] = { 2,2,2,3,4,5,7,8,9,1,12,23,4,5,5,5,5,4,4,7 };
	int i, j;
	int count1,max1 = -1,num1;
	int count2,max2 = -1,num2;
		for (i = 0; i <= 20; i++)
		{
		        	count1 = 0;
		                count2 = 0;
			for (j = 0; j <= 20; j++)
			{
				count1 += a[i] == a[j];
				count2 += b[i] == b[j];
			}
				
			if (count1 > max1)
				{
					max1 = count1;
					num1 = a[i];
				}
			if (count2 > max2) 
				{
					max2 = count2;
					num2 = b[i];
				}
         }
		printf("count1=%d num1=%d", max1, num1);
		printf("\n");
		printf("count2=%d num2=%d", max2, num2);
	        printf("\n");
	return 0;
}
Интересно что и без If можно создавать условия ! Попробую еще усложнить программу чтоб считала каких чисел больше в обоих массивах а не в каждом по отдельности
Alexalex777 вне форума Ответить с цитированием
Старый 06.05.2020, 21:31   #18
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Сложно в обоих массивах подсчитать максимальное количество чисел, это только если все числа с двух массивов перенести в третий массив и уже в нем подсчитать.
Alexalex777 вне форума Ответить с цитированием
Старый 07.05.2020, 00:50   #19
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Во-первых, в массивах всего по 20 элементов, так что циклы должны идти только до < 20. Во-вторых, покажите свою попытку решения. Можно и не объединять массивы для поиска.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 07.05.2020, 12:26   #20
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Код:
     for(i=0;i,=<20;i++)
                count=0;
           for(j=0;j+<20;j++)
                      {
                count+=(a[i]==b[j]&&a[i]!=a[j])||(a[i]==b[j]&&a[i]==a[j]);
                count+=(a[i]==b[j]&&b[i]!=b[j])||(a[i]==b[j]&&b[i]==b[j]);
                       }
             if(count>max)
                      {
                   max=count;
                    num=a[i];   //если в массиве а[] нет самого распространенного числа то это ошибка  
                     }
Alexalex777 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разница между числами businessman Паскаль, Turbo Pascal, PascalABC.NET 6 21.05.2015 12:55
Дана последовательность из 100 вещественных чисел. Определить , со скольких чётных чисел она начинается SnS Lazarus, Free Pascal, CodeTyphon 2 22.09.2013 18:48
Прога должна строить множества Idiot Помощь студентам 2 11.12.2010 22:45
программа должна считать по этой формуле CheyZe Помощь студентам 0 25.11.2010 19:10
Евклид - программа должна запрашивать у пользователя 2 числа и считать их НОД amfisat Помощь студентам 2 17.09.2010 09:53