Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2022, 21:56   #1
alderina_desk
Новичок
Джуниор
 
Регистрация: 13.04.2022
Сообщений: 1
По умолчанию Задача на С++

Нужно найти все треугольники Герона, чтобы все стороны, полупериметр и площадь были натуральными числами. Подскажите почему программа не выдает никаких результатов, где ошибка в коде?
Код:
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <iomanip> 



using namespace System;
using namespace std;

bool NumIsNatural(float p)
{
if ( (float)( (int) p ) == p && p!=0)
return 1;
return 0;
}

int main ()
{
setlocale(LC_ALL, "Russian");
float a, b, c, n, kol, s, p, str;
kol=0;
s=1;
cout<<"Введите количество треугольников Герона:"<<endl;
cin>>n;
if(n>0)
{
 while(kol<n)
 {
	  for ( a=1; a<=s; a++) {
	   
		  for ( b=a; b<=s; b++) {
		
			  for ( c=b; c<=s; c++) {
		 
				  if ( a+b>c && a+c>b && b+c>a) {
		 
					  p=(a+b+c)/2;
		   
					  if(NumIsNatural(p)==true){
			
						  str=sqrt(p*(p-a)*(p-b)*(p-c));
			 
						  if(NumIsNatural(str)==true && str==s) {
			  
							  cout<<a<<"--"<<b<<"--"<<c<<"-----"<<p<<"--"<<s<<endl;
			   
							  s++;
				
							  kol++;
						  }
					  }
				  }
			  }
		  }
	  }
 }
}

						  

				    

else {
cout<<"Такого нет!"<<endl;
}

system("pause");
}
alderina_desk вне форума Ответить с цитированием
Старый 13.04.2022, 23:51   #2
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

используя программу выше на qb64 qbasic работает и гораздо короче

Код:
For a = 1 To 10 ' geron.bas
    For b = a To 10
        For c = b To 10
If a+b > c Then If a+c > b Then If b+c > a Then p = (a+b+c)/2: str = Sqr(p*(p-a)*(p-b)*(p-c))
If p = Int(p) Then If str = Int(str) Then Print a; " "; b; " "; c, , p, str
Next: Next: Next
End
Ответ например 6 8 10 12 24
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по подсчёту статистики использования букв. Другая задача - по длинной арифметике Pascal ABC kimberly Паскаль, Turbo Pascal, PascalABC.NET 3 24.12.2012 17:03
задача на структуру(struct)/задача на работу с файлом SevenArth Помощь студентам 0 26.04.2012 19:06
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel Toofed Помощь студентам 0 30.11.2011 01:12
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51