Помогите дописать программу !!!!

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
ДанилКомаров
Сообщения: 1
Зарегистрирован: 08 дек 2017, 01:01

08 дек 2017, 01:06

Задача : Дан массив А , целые положительные числа переместить в массив С , а отрицательные в массив Б
Текст программы :
Не хватает проверки на целостность положительных чисел(См условие задачи )
Помогите пожалуйста))))

Код: Выделить всё

#include<locale.h> 
#include<stdio.h> 
#include<math.h> 
#include<conio.h> 

void main()
{
	setlocale(LC_ALL, "russian");
	float a[50], b[50], c[50];
	int i, n, k, p;
	printf("Количество элементов массива:");
	scanf_s("%d", &n);
	for (i = 0; i < n; i++) {
		printf("a[%d]=", i);
		scanf_s("%f", &a[i]);
	}
	for (i = 0, k = -1, p = -1; i < n; i++) {
		if (a[i] < 0) {
			k++; b[k] = a[i];
		}
		else { p++; c[p] = a[i]; }
	}if (k == -1)printf("Нету отрицательных элементов\n"); else {
		printf("Массив с отрицательными элементами:\n");
		for (i = 0; i < k + 1; i++) {
			printf("b[%d]=%f\n", i, b[i]);
		}
	}
	if (p == -1)printf("Нету положительных элементов"); else {
		printf("Массив с положительными элементами:\n");
		for (i = 0; i < p + 1; i++) {
			printf("c[%d]=%f\n", i, c[i]);
		}
	}
	_getch();
}
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

08 дек 2017, 08:57

ДанилКомаров писал(а):Не хватает проверки на целостность положительных чисел(См условие задачи )
Что это значит? Три раза перечитал условие, никакого упоминания о проверке целостности не нашёл.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Absurd
Сообщения: 1213
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

08 дек 2017, 19:11

ДанилКомаров писал(а):Задача : Дан массив А , целые положительные числа переместить в массив С , а отрицательные в массив Б

Переменная типа float целой быть не может в силу свойств переменных с плавающей запятой. То есть вместо 3.0 у тебя будет 3.00000101, например. Можно проверять что расстояние от до ближайшего целого меньше некоего порогового значения:

Код: Выделить всё

if (abs(x - floor(x + 0.5)) < 0.0001) {
}
2B OR NOT(2B) = FF
Слива
Сообщения: 133
Зарегистрирован: 19 мар 2016, 10:15

12 дек 2017, 07:38

fabs() же вроде для дробных.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

12 дек 2017, 10:22

Мне кажется, человек просто не понял условия. Это слишком сложно для алгоритмической задачки. Скорее всего входные числа целые, а их нужно разделить на положительные и отрицательные.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить