Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
2:07
1707
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->
1|2|3|4

АвторЦикл в С#
Как правильно задать "квадратность"?
a = sqrt(a)*sqrt(a)
являются целыми квадратами если sqrt(a) целое число, не являются если рациональное. это проверяется if(Sqrt(p[i])=int(Sqrt(p[i])) вот так...должно так, но видимо что то не так (: щас поищу на компе компилятор, попробую варьировать всякую ерунду (:
у меня проблема с преобразованиями int/float
я проверяю так: беру корень из числа и вычитаю из него модуль корня из числа. если получается ноль, то это нужный номер

объявление и инициализацию массива опустила, вот для статического:

void ololo(int m[100], int a) {

for (int i = 0; i < a; i++) {
m[i] = i ;
}

cout<<"\n ishodniy massiv: \n";


for (int i = 0; i < a; i++) {
cout << m[i] << '\t' ;
}

//проверка

for (int i = 0; i < a; i++) {
if ((sqrt((float)m[i])-abs(sqrt((float)m[i])))>0){
cout << i " - целочисленный квадрат от " sqrt(m[i]) << endl;
}
}


}
void ololo(int m[100], int a)
a - используемый размер массива
для мдяша:
Всё равно, при проверке не выводит нужное количество
беру корень из числа и вычитаю из него модуль корня из числа. если получается ноль, то это нужный номер
т.е. типо sqrt(a)-abs(sqrt(a)) так?
корень 10=3.16227766016838
модуль корня из 10=3.16227766016838
3.16227766016838-3.16227766016838=0
это нужный номер?
модуль корня из 10=3.16227766016838
чёрт. не та операция
там была как abs, только...
можно ли преобразовать флоат в инт без ошибки потери данных?
для мдяша:
а, ты хочешь в лоб т.е. через ошибку пойти?)
была такая мысль, но я хочу математически
при переводе в инт разряды после запятой стираются и тогда можно сравнивать с целочисленными значениями

у меня ещё и ошибка при взятии корня - перегрузка и ещё какая-то хрень
for(i=1;i<n;i++)
{
if (p[i]=j*j)
{g=g+1;}
}

проблема явно здесь, ща подумаю


посоны да там же двойное равно! иначе операция присваивания
if (d==sqrt(d) - modf(sqrt(d), &t))
{g=g+1;}
Попытался сделать так, всё равно ошибка какая-то
скинь название ошибки плз

с переводом инт/флоат?
не, при запуске, после введения элементов массива, ничего не происходит
я думаю нужно проверять так:
если остаток от деления на 10 произведения числа на 10 равно 0, то число целое
но как реализовать хз
есть продвижения. думаю, доделаю
типо
9.123*10=91.23
91.23%10=123
и
9*10=90
90%10=0
if (d==sqrt(d) - modf(sqrt(d), &t))
...
4 = 2-0
3 = 1.4 - 0.4 и т.д.
Если хочешь так тогда уж d==d - modf(sqrt(d), &t)
лол. единицу и ноль распознает, а дальше не видит
if (sqrt(d) - modf(sqrt(d), &t)==0)
Вот так. Всё равно в проге не выводится значение g
работает!
вот весь код.вся соль в последней функции.только у меня массив, насколько я понимаю, нединамический.


#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

void ololo(int m[100], int a);

int main () {

int mas[100]; // статический массив, можно выбирать размер, но не больше сотни элементов
int raz = 0;
int quit = 0;

while(quit!=27){
cout << "\n\nrazmer massiva? " ;
cin>>raz;
cout << "\n\n\n" << endl;

ololo(mas, raz);
cout << "\n\nnazhmite Esc dlya vyhoda";
quit=_getch();
}

return 0;
}




void ololo(int m[100], int a) {

for (int i = 0; i < a; i++) {
m[i]=i;
}

cout<<"\n\n ishodniy massiv: \n\n";


for (int i = 0; i < a; i++) {
cout << m[i] << '\t' ;
}

cout << "\n\n";

for (int i = 0; i < a; i++) {
int h = m[i];
if ( sqrt( (float)h ) * sqrt( (float)h ) == (float)h ) {
cout << h <<" - kvadrat ot "<< sqrt( (float)h ) << endl;

}
}



}
1|2|3|4
К списку тем
2007-2026, онлайн игры HeroesWM