|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
29.10.2012, 17:55 | #1 (permalink) |
4846АМ
Регистрация: 07.05.2010
Сообщений: 1,941
Записей в дневнике: 22
Сказал(а) спасибо: 3
Поблагодарили 4 раз(а) в 3 сообщениях
Репутация: 7564
|
Простенькая задачка на Си
Я написал код, который должен работать, но вместо этого, компьютер выдает мне √(2)=1 Код:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int n, i, j; double s=0, z; puts("Vvedite dlinu ryada:"); scanf("%d", &n); for (i=0, j=2; i<n; i++, j+=2) { s+=(pow(2,(1/j))); } printf("S=%f",s); getch(); return 0; }
__________________
Человек будет свободен до тех пор, пока дважды два равно четырем |
29.10.2012, 17:55 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Посмотрите на эти темы, наверняка там уже есть нужные ответы Задачка на С++ Вот задачка простенькая передняя панель Простенькая 5.1 из подручных средств Задачка на ассемблере Задачка. |
30.10.2012, 00:45 | #3 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
Код:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int n, i, l; double s=0; puts("Vvedite dlinu ryada:"); scanf("%d", &n); for (i=1; i<=n; i++) { s = sqrt(2 + s); } printf("S=%f",s); getch(l); return 0; } |
30.10.2012, 01:11 | #4 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
Немного разобрался.
1) Почему у вас выводится на корень(2) - 1 дело в том, что a / b , где a и b это целые числа, вернет целочисленное деление a на b. Ну а в вашем случае поскольку j - целое, 1 тоже целое и j > 1 то вернет 0. Для того, чтобы вернуло число с плавающей точкой то необходимо, чтобы одно из чисел было вещественным. В вашем случае можно написать так 1. / j 1. это тоже самое, что и 1.0 т.е. компилятор "понимает", что это вещественное число и вернет 0,5 2) Ваша программа вычисляет не то, что вы указали в условии, а такое: √2 + √√2 + √√√2 + ... |
30.10.2012, 14:19 | #5 (permalink) |
4846АМ
Регистрация: 07.05.2010
Сообщений: 1,941
Записей в дневнике: 22
Сказал(а) спасибо: 3
Поблагодарили 4 раз(а) в 3 сообщениях
Репутация: 7564
|
спасибо. теперь разобрался в чем проблема...
__________________
Человек будет свободен до тех пор, пока дважды два равно четырем |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|