Перейти к содержимому

Здравствуйте, гость ( Вход | Регистрация )



  • Авторизуйтесь для ответа в теме
Трудно ли сдавать информатику? Сообщений в теме: 71

#61
Отправлено 09 Январь 2007 - 19:17

S.O.D.

    Профессор

  • Пользователи
  • PipPipPipPip
  • 1 826 сообщений
да я хотел спросить,а можно ли эту программу переписать не используя bool, char. ну к примеру использовать класс double? а если мне нужно доказать,что заданное число есть разность квадратов,то нужно в цикле заменить знак плюс на минус?

#62
Отправлено 09 Январь 2007 - 19:36

re1ax

    Аспирант

  • Пользователи
  • PipPipPip
  • 648 сообщений
  • Пол:Мужчина
  • Район:Новопеределкино
вот тут поменять + на - : if ((pow(helpNum,2)+pow(secHelpNum,2)==number))
но на самом деле это программ совсем другого рода, т.к. рискну предположить, что один из чисел может быть больше исходного, и там другой поиск...
bool можно не использовать в главной программе (это лишь стиль такой) , вместо этого поставить void main (void) и соответственно убрать в конце return false;
char[] - лишь для того, чтобы были видны русские буквы

#63
Отправлено 09 Январь 2007 - 20:00

S.O.D.

    Профессор

  • Пользователи
  • PipPipPipPip
  • 1 826 сообщений
Просто Маркыч сказал,что если у меня есть решение задачи,то он мне даст похожее и типа я ее должен буду решить,а я вот и думаю заранее где,что менять :)

#64
Отправлено 12 Январь 2007 - 20:45

S.O.D.

    Профессор

  • Пользователи
  • PipPipPipPip
  • 1 826 сообщений
новый вопрос: чсло m представить в виде суммы квадрата натурального числа и числа,делящегося на 5, если невозможно напечать сообщение. так вот,я пробовал менять условие проверки,а программа выдает мне пар так 10 чисел, т.е ответа нет, в чем может быть дело?

#65
Отправлено 12 Январь 2007 - 21:54

re1ax

    Аспирант

  • Пользователи
  • PipPipPip
  • 648 сообщений
  • Пол:Мужчина
  • Район:Новопеределкино
#include <iostream.h> //cout/cin #include <math.h> //sqrt #include <windows.h> //CharToOem void searchNumbers(int); bool main (void) { char str[]="Число для разложения: "; CharToOem(str,str); cout<<str<<' '; int num; cin>>num; searchNumbers(num); return 0; } void searchNumbers(int number) { int helpNum=number; while (helpNum>0) { long int i=1; while (i<=number) { int secHelpNum=helpNum-i; if ((helpNum<=0||secHelpNum<=0)&&(helpNum%5==0||secHelpNum%5==0)) break; if ((pow(helpNum,2)+pow(secHelpNum,2)==number)) { char str[]="Разложение на:"; CharToOem(str,str); cout<<str; cout<<helpNum<<" u "<<secHelpNum; cout<<"\n"; } i++; } helpNum--; } }

#66
Отправлено 12 Январь 2007 - 21:59

S.O.D.

    Профессор

  • Пользователи
  • PipPipPipPip
  • 1 826 сообщений
в задаче имелось ввиду,что только одно дчисло делится на пять, к примеру 14 это 3 в квадрате и 5. щас проверим...

#67
Отправлено 12 Январь 2007 - 22:04

S.O.D.

    Профессор

  • Пользователи
  • PipPipPipPip
  • 1 826 сообщений
имелось ввиду m=a^2 + b, b делится на 5

#68
Отправлено 12 Январь 2007 - 22:06

re1ax

    Аспирант

  • Пользователи
  • PipPipPip
  • 648 сообщений
  • Пол:Мужчина
  • Район:Новопеределкино
ну блин, можно попытаться чуть чуть подумать: #include <iostream.h> //cout/cin #include <math.h> //sqrt #include <windows.h> //CharToOem void searchNumbers(int); bool main (void) { char str[]="Число для разложения: "; CharToOem(str,str); cout<<str<<' '; int num; cin>>num; searchNumbers(num); return 0; } void searchNumbers(int number) { int helpNum=number; while (helpNum>0) { long int i=1; while (i<=number) { int secHelpNum=helpNum-i; if ((pow(helpNum,2)+5==number)) { char str[]="Разложение на:"; CharToOem(str,str); cout<<str; cout<<helpNum<<" u 5 "; cout<<"\n"; break; } i++; } helpNum--; } }

#69
Отправлено 12 Январь 2007 - 22:10

S.O.D.

    Профессор

  • Пользователи
  • PipPipPipPip
  • 1 826 сообщений
к сожаленью (без шуток) мой моск нихера в программировании не соображает, мышленье у меня видать кривое...

#70
Отправлено 17 Январь 2007 - 17:00

Voldemar2004

    Активный участник

  • Пользователи
  • PipPip
  • 140 сообщений
Вотъ я улучшил свой код: #include <iostream> #include <math> int IsRoot(int); void main() { const int Number = 541; std::cout << Number << " =\t"; if( IsRoot(Number) ) { std::cout << IsRoot(Number) << "^2\n\nor\n\n"; } for(int i = Number; i > 0; --i) { int Buffer; if( IsRoot(i) ) { Buffer = i; for(int j = Number - Buffer; j > 0; --j) { if( IsRoot(j) && Number == Buffer + j ) { std::cout << sqrt(j) << " ^2 + " << sqrt(i) << "^2" << '\n'; } } } } std::cin.get(); } int IsRoot(int k) { (int)sqrt(k) == sqrt(k) ? k=sqrt(k) : k=0; return k; } :thumbsup:

#71
Отправлено 17 Январь 2007 - 18:32

Voldemar2004

    Активный участник

  • Пользователи
  • PipPip
  • 140 сообщений

чсло m представить в виде суммы квадрата натурального числа и числа,делящегося на 5, если невозможно напечать сообщение.

Вообще-то любое число делится на 5 - ты наверное имел в виду без остатка? Тогда так:

#include <iostream>
#include <math>

int IsRoot(int);

void main()
{

const int Number = 229; // 13^2 + 60

std::cout << Number << " =\t";


for(int i = Number; i > 0; --i)
{

int buffer;

if( IsRoot(i) )
{
(buffer = Number - i) % 5 == 0 ? std::cout << IsRoot(i) << "^2 + " << buffer << '\n': std::cout << "\n";
}
}


std::cin.get();

}


int IsRoot(int k)
{

(int)sqrt(k) == sqrt(k) ? k=sqrt(k) : k=0; return k;

}

С++ Навсегда! :drinks_cheers:
С тя пиво студент! :D

#72
Отправлено 17 Январь 2007 - 21:20

S.O.D.

    Профессор

  • Пользователи
  • PipPipPipPip
  • 1 826 сообщений
спасиба канечна,но уже не надо :)




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных