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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2012, 00:10   #1
rentxxx89
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 12
По умолчанию Не идёт по циклу

Подскажите пожалуйста в чём ошибка?
3. Напишите программу вычисления произведения двух натуральных чисел А и В, не используя операцию умножения: A*B = A+A+ … +A (число слагаемых равно B).
Текст программы:
Код:
#include <stdio.h>
#include <math.h>
main()
{
int a,b,x,n;
n=1;
x=0;
printf ("Введите два множителя:");
scanf ("%d %d", &a, &b);
      while (n==b);
      {
      x=a*n+a;
      n++;
      }
printf ("%d*%d=%d\n", a, b, x);
getch();
return 0;
}
Я только учусь

Последний раз редактировалось ACE Valery; 22.01.2012 в 01:07.
rentxxx89 вне форума Ответить с цитированием
Старый 22.01.2012, 00:21   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

проблема в условии, я думаю вы имели ввиду n<=b.
далее в самом цикле вы применили умножение, поидее надо просто x+=a;
и стоит ввести проверку на нужные значения.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.01.2012, 00:22   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

x=a*n+a; Эта формула не верна в соответствии с условиями задачи. Нужно так:
x += a;
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 22.01.2012, 00:28   #4
rentxxx89
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
проблема в условии, я думаю вы имели ввиду n<=b.
далее в самом цикле вы применили умножение, поидее надо просто x+=a;
и стоит ввести проверку на нужные значения.
Сейчас попробуем
Я только учусь

Последний раз редактировалось rentxxx89; 22.01.2012 в 00:40.
rentxxx89 вне форума Ответить с цитированием
Старый 22.01.2012, 00:28   #5
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

rentxxx89

Подскажите пожалуйста в чём ошибка?

в фатальной неправильной комбинации цикла while и оператора "запятая"

Код:
for (int i=0; i<B; i++)
    A += B;
Rififi вне форума Ответить с цитированием
Старый 22.01.2012, 00:35   #6
Китос
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 26
По умолчанию

Код:
int main() {
	int a,b,x=0,n=0;
	printf("Введите 2 множителя: ");
	scanf("%d%d",&a,&b);
	while (n++<b) x+=a;
	printf("%d*%d=%d",a,b,x);
	system("pause");
	return 0;
Китос вне форума Ответить с цитированием
Старый 22.01.2012, 00:37   #7
rentxxx89
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
rentxxx89

Подскажите пожалуйста в чём ошибка?

в фатальной неправильной комбинации цикла while и оператора "запятая"

Код:
for (int i=0; i<B; i++)
    A += B;
Не могли бы вы объяснить в чём суть? не совсем пойму логику
Я только учусь
rentxxx89 вне форума Ответить с цитированием
Старый 22.01.2012, 00:38   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от rentxxx89 Посмотреть сообщение
с первым утверждением не соглашусь, я думаю нужно именно n==b, так как n-обозначает количество слагаемых a и должно быть равно b.
Со вторым замечанием соглашусь, сейчас посмотрим
Согласитесь и с первым, так как цикл while выполняется до тех пор, пока условие истинно.
При n==b, оно истинно только при их равенстве, а при n < b цикл не начнётся. Можно написать и так n != b.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 22.01.2012, 00:42   #9
rentxxx89
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 12
По умолчанию

Спасибо всем большое. Кажется понял!!!
Я только учусь
rentxxx89 вне форума Ответить с цитированием
Старый 22.01.2012, 00:42   #10
Китос
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 26
По умолчанию

Суть не в использовании цикла for. У вас просто неверно было задано условие цикла
Цитата:
while (n==b)
, из-за него программа и не заходила в цикл. Да и тело цикла тоже неверное, нужно просто суммировать, как все уже заметили.
Китос вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оператори циклу while, do-while ?? axi.niko Общие вопросы C/C++ 2 12.12.2010 12:17
Вопрос по циклу Айдар Работа с сетью в Delphi 1 31.08.2010 13:40
Вопрос по циклу Crivel Общие вопросы Delphi 1 13.08.2008 15:11
Вопросик по циклу Almost_Famous Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 15.05.2008 21:45