Страница 1 из 1

Задача с циклом на С

Добавлено: 15 ноя 2014, 17:52
MonteCristo
здравствуйте! вот программа на С:

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

/*условие задачи:Дано действительное число а(1<а<3).
Составить  алгоритм, находящий среди чисел 1 , 1+1/2 , 1+1/2+1/3 , ... первое, большее а.*/
#include<stdio.h>
#include<math.h>
#include<locale.h>
void main()
{
	setlocale(0, "russian");
	double a, s;
	int i;
	i = 1;
	printf("Введите число больше 1 и меньше 3\n");
	scanf_s("%f", &a);
	for (s = 0; s <= a; i++)
	{
		s = s + 1/i;
	}
	printf("%f\n", s);
}
Вопрос: почему не выполняется цикл?
[ATTACH]2117[/ATTACH]

Re: задача с циклом на С

Добавлено: 17 ноя 2014, 17:06
Romeo
Картинка почему-то не открывается на весь экран.

А отладить этот простенький код не пробовал? Отладка всегда помогает.

Делаю предположение, что переменная a объявлена как double, а читается как через scanf как float (%f), из-за этого в половине числа остаётся мусор (double занимает в два раза больше памяти, чем float). Но я бы всё же проверил это предположение. Возвращаясь к возможности отладки: достаточно было запустить отладчик, и проблема бы стала понятна после первого же прохода по коду.

Re: задача с циклом на С

Добавлено: 17 ноя 2014, 17:49
MonteCristo
спасибо за ответ, проблема решилась, когда подставил long
когда подставлял float вместо double ничего не менялось