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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2012, 22:38   #1
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию Цикл "for"

Не могу понять как сделать задачу. прохожу циклы(конкретно for). Задание: введите 2 числа. первое х - основание, второе n - степень. посчитать x^n.
вот что у меня вышло.. но не работает так, как надо..других мыслей пока нету. помогите новичку пожалуйста. С недавно изучаю.
Код:
#include<stdio.h>
#include<conio.h>
#include<locale.h>
void main()
{	
	setlocale(LC_ALL, "Russian");
	int x,n,i,p=1;
	printf("Введите число и степень, в которую необходимо возвести . . ");
	scanf("%d%d",&x,&n);
	for (i=1; i<=n; i++)
	{
		if(n=0)
		{
		break;
		}
		else
		{
			p=x*x;
		}
		
	}
	printf("%d\n",p);
	_getch();
}
Я могу, Я хочу, Я буду!
ArmanPrestige вне форума Ответить с цитированием
Старый 29.01.2012, 22:43   #2
MrCold
Пользователь
 
Регистрация: 23.12.2011
Сообщений: 17
По умолчанию

Это if(n=0) - ? , должно быть if(n == 0)
MrCold вне форума Ответить с цитированием
Старый 29.01.2012, 23:04   #3
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию

Цитата:
Сообщение от MrCold Посмотреть сообщение
Это if(n=0) - ? , должно быть if(n == 0)
точно. но все равно. если ввести 5 2 то пишет ответ 25. тоже самое если ввести 5 3 и 5 1. помогите плиз.
понятно что если ввести 5 1 то с этим кодо вынесет 25 ответ, но как этого избежать и сделать чтобы все верно считало
Я могу, Я хочу, Я буду!
ArmanPrestige вне форума Ответить с цитированием
Старый 29.01.2012, 23:11   #4
MrCold
Пользователь
 
Регистрация: 23.12.2011
Сообщений: 17
По умолчанию

Код:
#include <iostream>
#include <stdio.h>
using namespace std;
void funpow(int num,int n); //прототип
 
int main()
{
	setlocale(LC_ALL, "Russian");
        int num, n;
        cout<<"Введите число: ";
        cin>>num;
        cout<<"Введите степень: ";
        cin>>n;       
        funpow(num, n); //вызов функции
system("pause");
        return 0;
}
 
void funpow(int num,int n) //тело функции
{
        
  int res = num;
        for (int i = 1; i < n; i++)
        {
                res *= num;
        }
cout<<res;

}
Правда на С++ написал. Ну там уж исправите ...

Последний раз редактировалось Stilet; 30.01.2012 в 09:08.
MrCold вне форума Ответить с цитированием
Старый 29.01.2012, 23:32   #5
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Функция возведения в степень на C:
Код:
double pow(double x, int n)
{
  if (n > 0)
    return x * pow(x, n - 1);
  else if (n < 0)
    return 1/pow(x, -n);
  else
    return 1;
}
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 29.01.2012, 23:36   #6
9i.
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 103
По умолчанию

p=p*x а не p=x*x
9i. вне форума Ответить с цитированием
Старый 30.01.2012, 00:10   #7
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию

Цитата:
Сообщение от 9i. Посмотреть сообщение
p=p*x а не p=x*x
Спасибо!!


2Ctrl - надо было использовать цикл for и без pow(
Я могу, Я хочу, Я буду!
ArmanPrestige вне форума Ответить с цитированием
Старый 30.01.2012, 19:13   #8
ArmanPrestige
Главное желание.
Форумчанин
 
Регистрация: 28.11.2011
Сообщений: 122
По умолчанию

подскажите пожалуйста.
вычитал что while(x) и while(x==0) тоже самое.
а if(!(x%2)) и if(x%2==0) одно и тоже? если да, то объясните пожалуйста почему.
Я могу, Я хочу, Я буду!
ArmanPrestige вне форума Ответить с цитированием
Старый 30.01.2012, 19:42   #9
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от ArmanPrestige Посмотреть сообщение
подскажите пожалуйста.
вычитал что while(x) и while(x==0) тоже самое.
а if(!(x%2)) и if(x%2==0) одно и тоже? если да, то объясните пожалуйста почему.
Одно и то же. Дело в неявном приведении типов int->bool, нулевые значения - это false, ненулевые - true.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 30.01.2012, 19:51   #10
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от ArmanPrestige Посмотреть сообщение
подскажите пожалуйста.
вычитал что while(x) и while(x==0) тоже самое.
Это не тоже самое.

Цитата:
Сообщение от ArmanPrestige Посмотреть сообщение
а if(!(x%2)) и if(x%2==0) одно и тоже? если да, то объясните пожалуйста почему.
Хммммм.... да, тоже самое.

Благодаря значку "!".

Последний раз редактировалось _Bers; 30.01.2012 в 19:53.
_Bers вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. Каравай Microsoft Office Excel 13 17.02.2010 09:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04