Другие языки программирования и технологии

нужно написать программу на С или на С++

Корни
Нужно вывести на экран таблицу корней.
Input
Со стандартного устройства ввода вводится единственное натуральное число – N, не
превосходящее 300.
Output
Нужно выдать на стандартное устройство вывода N строк вида
_/K = M
где M – округленный до ближайшего числа квадратный корень числа K.
Sample Input
5
Sample Output
_/1 = 1
_/2 = 1
_/3 = 2
_/4 = 2
_/5 = 2
#include < stdio.h >

static unsigned long __fls(unsigned long word)
{
int num = BITS_PER_LONG - 1;

#if BITS_PER_LONG == 64
if (!(word & (~0ul << 32))) {
num -= 32;
word <<= 32;
}
#endif
if (!(word & (~0ul << (BITS_PER_LONG-16)))) {
num -= 16;
word <<= 16;
}
if (!(word & (~0ul << (BITS_PER_LONG-8)))) {
num -= 8;
word <<= 8;
}
if (!(word & (~0ul << (BITS_PER_LONG-4)))) {
num -= 4;
word <<= 4;
}
if (!(word & (~0ul << (BITS_PER_LONG-2)))) {
num -= 2;
word <<= 2;
}
if (!(word & (~0ul << (BITS_PER_LONG-1))))
num -= 1;
return num;
}
unsigned long int_sqrt(unsigned long x)
{
unsigned long b, m, y = 0;

if (x <= 1)
return x;

m = 1UL << (__fls(x) & ~1UL);
while (m != 0) {
b = y + m;
y >>= 1;

if (x >= b) {
x -= b;
y += m;
}
m >>= 2;
}

return y;
}

int main() {
unsigned long s;
scanf("%ld",&s);
for (int i = 1 ; i <= s ; i++)
printf("_/%d = %ld\n",i,int_sqrt(i));

return 0;
}
во время компиляции определи BITS_PER_LONG
Алексей Ропотов
Алексей Ропотов
43 175
Лучший ответ
Александр Чистяков огромное спасибо
#include <math.h>
#include <stdio.h>

int main() {
int n;
scanf("%d", &n);
for (int i = 1; i <= n; ++i) printf("_/%d = %d\n", i, lround(sqrt(i)));
}

Или если в стандартной библиотеки Си нет функций семейства "round", то можно так:

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

int mround(double x) { return (int)(x + 0.5); }

int main() {
int n;
scanf("%d", &n);
for (int i = 1; i <= n; ++i) printf("_/%d = %d\n", i, mround(sqrt(i)));
}
Александр Чистяков большое спасибо
Посмотри это, понятно же какое ближайшее целое правильное:
#include "stdafx.h"
#include

int _tmain(int argc, _TCHAR* argv[])
{
const int N = 10;
for (int i = 0; i < N; i++)
printf("_/%i = %d \t %d\t %g \n", i, (int)sqrt(i), (int)(sqrt(i)+0.5), sqrt(i));
return 0;
}
Пчёлка Мёд
Пчёлка Мёд
36 000
_/K это что такое?

for(int i = 0; i < N; i++)
printf("_/%i = %i\n", i, sqrt(i));
Aidarbek Yessengaliyev Речь идет о корнях, так что вероятно это √
скиньте на паскале пж