Задачас Циклом На С:

MonteCristo

New Member
15.11.2014
1
0
#1
здравствуйте! вот программа на С:

C++:
/*условие задачи:Дано действительное число а(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);
}
Вопрос: почему не выполняется цикл?
 

Вложения

Astyxys

New Member
13.07.2010
4
0
#2
C++:
#include<stdio.h>
#include<math.h>
#include<locale.h>
int main()
{
setlocale(0, "russian");
float a, s;	
s = 0.0f;
printf("Введите число больше 1 и меньше 3\n");
scanf("%f", &a);
for (int i = 1; s < a; i++)
{
s += (float)1/i;
}
printf("%f\n", s);

return 0;
}
Ты сменил всю локаль. При вводе чисел с плавающей точкой(в настройках русской локали) тебе надо вводить не точку, а запятую.