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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2007, 11:24   #1
Сема
Новичок
Джуниор
 
Аватар для Сема
 
Регистрация: 21.12.2007
Сообщений: 2
По умолчанию Помогите решить две задачи на С/С++

1. В числе сосчитать количество нулевых битов расположенных строго между единичными. (например: 1000101001011 здесь два бита)
2. В массиве из 15 элементов вещественного типа расставить в обратном порядке элементы расположенные между максимальным и минимальным.
Сема вне форума Ответить с цитированием
Старый 21.12.2007, 15:54   #2
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Это 1я:

Код:
#include <stdio.h>



int main()
{
	long num;
	int i,res = 0;
	printf("Enter number:");
	scanf("%ld",&num);
	for(i = 0;i < sizeof(num) * 8 - 3;i++)
		if((num & (7 >> i))/*маска*/ == 6/*101b*/)
			res++;

	printf("Result: %d\n", res);

	return(0);
}
theos вне форума Ответить с цитированием
Старый 21.12.2007, 16:10   #3
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

2я:

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


template<class T>
void swap(T& a, T& b)
{
	a = a + b;
	b = a - b;
	a = a - b;
}


void reverse(double *m, int fr, int to)
{
	int i;
	if(fr > to) swap(fr,to);
	fr += 1; to -= 1;
	for(i = fr; i < (to + fr) / 2; i++)
	{
		swap(m[i],m[to + fr - i]);
		printf("Swap %d - %d\n", i, to + fr - i);
	}
}


int main()
{
	double *m, min, max;
	int n, i, a, b;
	printf("Enter array size: ");
	scanf("%d",&n);
	m = (double*)malloc(n * sizeof(double));
	for(i = 0;i < n;i++)
	{
		printf("Enter %d# element: ", i+1);
		scanf("%lf", m+i);
		if(i == 0)
		{
			min = max = m[0];
			a = b = 0;
		}
		if(m[i] > max)
		{
			max = m[i];
			a = i;
		}
		if(m[i] < min)
		{
			min = m[i];
			b = i;
		}
	}

	printf("\nMax: %4.2lf (%d)\tMin: %4.2lf (%d)\n",max,a,min,b);

	reverse(m,a,b);

	printf("\n\nRes: ");
	for(i = 0;i < n;i++) printf("%4.2lf ", m[i]);
	printf("\n");
	
	free(m);
	return(0);
}
theos вне форума Ответить с цитированием
Старый 24.12.2007, 07:31   #4
Сема
Новичок
Джуниор
 
Аватар для Сема
 
Регистрация: 21.12.2007
Сообщений: 2
По умолчанию

Спасибо друг, ты меня выручил
Сема вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите решить задачи!!! black_soul Фриланс 13 21.07.2008 09:22
Помогите решить задачи DenSuper007x Помощь студентам 2 12.04.2008 23:00
Помогите решить задачи Andyst Помощь студентам 3 25.12.2007 15:14
ПОМОГИТЕ РЕШИТЬ ЗАДАЧИ С++ lawny Фриланс 1 24.12.2007 20:58
Помогите решить задачи! Вилен Помощь студентам 2 10.10.2007 23:12