forum.rastrnet.ru

forum.rastrnet.ru (http://forum.rastrnet.ru/index.php)
-   Программируем (http://forum.rastrnet.ru/forumdisplay.php?f=35)
-   -   C++: помощь начинающим (http://forum.rastrnet.ru/showthread.php?t=53695)

Белый 04.01.2010 21:36

C++: помощь начинающим
 
помогите, пожалуйста!

есть задача:

Дано целое число n. Получить наименьшее число вида 2^r , превосходящее n.

есть код:

#include <iostream>
#include <math.h>
using namespace std;

int f1 (int r, int n)
{
cout << "BBEDuTE n\n";
cin >> n;
r = 1;
if (float pow(2, r) > n)
cout << "2^r > n\n";
else r++;
}


int main ()
{
cout << f1;
return 0;
}

вопрос: почему не работает, где ошибка??

Techno 04.01.2010 22:22

попробуй так

#include <iostream>
#include <math.h>
#include <conio.h>
void main()
{
int m=0,z=0;
std::cout << "BBEDuTE m\n";
std::cin >> m;
while (pow(2,z)<=m){ z++; }
std::cout << "itog=2^"<<z;
getch();
}

санёк 04.01.2010 22:43

возможно нужно заменить
Цитата:

if (float pow(2, r) > n)
на
Цитата:

if (powf(2, r) > n)
P.S. после изменения компилятор перестал выдавать ошибки,но программа не запустилось т.к. C++ не установлен(delphi только)

Forbrak 04.01.2010 23:57

Полезная ссылочка для начинающих:
http://zed.karelia.ru/go.to/for.stud...ng.rules/rules
Пыс: смотри пост номер два, что касается твоей проги, надо не исправлять ошибку, а все переписывать.

Белый 05.01.2010 01:59

Цитата:

Сообщение от Victor_y (Сообщение 760329)
попробуй так

#include <iostream>
#include <math.h>
#include <conio.h>
void main()
{
int m=0,z=0;
std::cout << "BBEDuTE m\n";
std::cin >> m;
while (pow(2,z)<=m){ z++; }
std::cout << "itog=2^"<<z;
getch();
}

не работает..
1>d:\users\белый\documents\visual studio 2008\projects\example1\example1\laba 4(ver1).cpp(9) : error C2668: pow: неоднозначный вызов перегруженной функции
1> e:\program files\visual studio\vc\include\math.h(575): может быть 'long double pow(long double,int)'
1> e:\program files\visual studio\vc\include\math.h(527): или 'float pow(float,int)'
1> e:\program files\visual studio\vc\include\math.h(489): или 'double pow(double,int)'
1> при попытке сопоставить список аргументов '(int, int)'
1>d:\users\белый\documents\visual studio 2008\projects\example1\example1\laba 4(ver1).cpp(9) : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции

Белый 05.01.2010 02:00

Цитата:

Сообщение от санёк (Сообщение 760330)
возможно нужно заменить

на


P.S. после изменения компилятор перестал выдавать ошибки,но программа не запустилось т.к. C++ не установлен(delphi только)

тоже не рабит..(
1>d:\users\белый\documents\visual studio 2008\projects\example1\example1\laba 4.cpp(10) : warning C4244: аргумент: преобразование 'int' в 'float', возможна потеря данных
1>d:\users\белый\documents\visual studio 2008\projects\example1\example1\laba 4.cpp(13) : error C4716: f1: должна возвращать значение

Techno 05.01.2010 02:46

Цитата:

Сообщение от Белый (Сообщение 760357)
тоже не рабит..(

мм, понятно, у тебя VS 2008 там у нее особенности есть некоторые, лучше установи С++ Builder или VS 2003 net, там меньше заморочек.

А для VS 2008 нужно действовать так:
1) Нажми создать новый проект.
2) Выбери обязательно создать консольное приложение, все галочки пусть по умолчанию стоят. (Галочку на пустом проекте НЕ ставь)
3) После создания проекта найди главный файл(это тот который имеет тоже имя что и сам проект, и он с расширением cpp), и замени его код посностью на этот:

#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
int m=0,z=0;
float rt=2;
std::cout << "BBEDuTE m\n";
std::cin >> m;
while (pow(rt,z)<=m){ z++; }
std::cout << "itog=2^"<<z;
getch();
return 0;
}
//------------
4) Сохрани проект и компилируй.


Текущее время: 19:35. Часовой пояс GMT +7.

Powered by vBulletin® Version 3.8.4 Patch Level 5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot

Форум открыт в июле 2004 г.