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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2011, 17:22   #1
belik1
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 15
Сообщение Цыклы

Привет всем! С наступившим! решаю вот такую задачу:
вот мой код, но работает не совсем корректно...
Код:
#include<stdio.h>
#include<conio.h>
# define m 6
main()
{
      int a=64, b=32, c=16, e=4, w=2, q=1;
      int i, n;
      int flagA=0, flagB=0, flagC=0, flagE=0, flagW=0, flagQ=0;
      
      printf("VVedite n");
      scanf("%d", & n);
           
      
          for(i=0; i<100; i++)
                   {
                          if ((n-a)>=0)
                          {n=n-a;
                          flagA++;}
                          
                          else { 
                          if ((n-b)>=0)
                          {n=n-b;
                          flagB++;}
                          
                          else { 
                          if ((n-c)>=0)
                          {n=n-c;
                          flagC++;}
                          
     	             else { 
                          if ((n-e)>=0)
                          {n=n-e;
                          flagE++;}
                         
		 else { 
                          if ((n-w)>=0)
                          {n=n-w;
                          flagW++;}
                          
		 else { 
                          if ((n-q)>=0)
                          {n=n-q;
                          flagQ++;}}}}}}           
			  
			  
		}//for
      printf("Po 64=%d, Po 32=%d, Po 16= %d, Po 8=%d, Po 4=%d, Po 2=%d, Po 1=%d", flagA, flagB, flagC, flagE, flagW, flagQ);
      getch();}
можно ли сделать по другому или исправить то что у меня есть- очень запутанно вышло
Изображения
Тип файла: jpg 9.JPG (26.5 Кб, 152 просмотров)
belik1 вне форума Ответить с цитированием
Старый 02.01.2011, 17:32   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
#include<stdio.h>
#include<conio.h>
# define m 6
main()
{
>>
Код:
include<stdio.h>
#include<conio.h>
# define m 6
void main()
{
Для начала
BOBAH13 вне форума Ответить с цитированием
Старый 02.01.2011, 17:56   #3
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

Код:
#include <iostream>


int _tmain(int argc, _TCHAR* argv[])
{
	int n;
	int money64 = 0, money32 = 0, money16 = 0, money8 = 0, money4 = 0, money2 = 0, money1 = 0;

	std::cout << "VVedite summu: ";
	std::cin >> n;
	std::cout << "\n";

	int temp = n;

	money64 = temp / 64;
	temp %= 64;

	money32 = temp / 32;
	temp %= 32;

	money16 = temp / 16;
	temp %= 16;

	money8 = temp / 8;
	temp %= 8;

	money4 = temp / 4;
	temp %= 4;

	money2 = temp / 2;
	temp %= 2;

	money1 = temp / 1;
	temp %= 1;

	std::cout << "Summa " << n << ", platim:\n";
	if (money64 > 0)
		std::cout << "64 money: " << money64 << "\n";
	if (money32 > 0)
		std::cout << "32 money: " << money32 << "\n";
	if (money16 > 0)
		std::cout << "16 money: " << money16 << "\n";
	if (money8 > 0)
		std::cout << "8 money: " << money8 << "\n";
	if (money4 > 0)
		std::cout << "4 money: " << money4 << "\n";
	if (money2 > 0)
		std::cout << "2 money: " << money2 << "\n";
	if (money1 > 0)
		std::cout << "1 money: " << money1 << "\n";

	std::cin >> n;
	return 0;
}
цЫкл тут ненужен как видешь)

ЗЫ: ну и 2ой более простой вариант решения задачи это такой:
Код:
money64 = temp / 64;
if (temp % 64 > 0)
    money64++;
Выводишь эти 64 денюшковые банкноты и говоришь оставте сдачу себе

Последний раз редактировалось UltimaBeaR; 02.01.2011 в 18:01.
UltimaBeaR вне форума Ответить с цитированием
Старый 02.01.2011, 18:16   #4
belik1
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 15
По умолчанию

я плохо разбираюсь в си++, только в си. Переведите мне пожалуйста следующие строчки
Код:
temp %= 64;
и
Код:
std::cout << "Summa " << n << ", platim:\n";
	if (money64 > 0)
		std::cout << "64 money: " << money64 << "\n";
belik1 вне форума Ответить с цитированием
Старый 02.01.2011, 18:24   #5
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

temp %= 64; тоже самое что и temp = temp % 64;
temp % 64 означает получение остатка от деления temp на 64

Код:
std::cout << "Summa " << n << ", platim:\n";
	if (money64 > 0)
		std::cout << "64 money: " << money64 << "\n";
это просто вывод но вместо printf я использую std::cout, если хочешь можеш ьпросто заменить на printf, тогда поидее так будет
printf("Summa %d, platim:\n", n);
а следующее это проверка если денюшка больше 0ля то ее печатаем если нет то ничего)
UltimaBeaR вне форума Ответить с цитированием
Старый 02.01.2011, 19:02   #6
belik1
Пользователь
 
Регистрация: 18.12.2010
Сообщений: 15
По умолчанию

понятно. ну чтож попробуем. Спасибо!
belik1 вне форума Ответить с цитированием
Старый 02.01.2011, 20:21   #7
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Для множества однотипных данных лучше массив использовать, а не кучу переменных
Например так:
Код:
#include <iostream>


int main() {
	int notes[7] = { 0 };  // массив банкнот
	int note_counter = 0; 
	int sum = 0;  // сумма
	int div = 64;  // текущий номинал банкноты

	std::cout << "Cost: ";
	std::cin  >> sum;

	while (sum > 0) {
		if (div <= sum) { // Если номинал банкноты меньше или равен общей сумме
			notes[note_counter]++;
			sum -= div;
		} else {
			note_counter++;
			div /= 2;
		}
	}

	for (int i = 0, j = 64; i < 7; i++, j /= 2)
		if (notes[i] > 0)
			std::cout << j << ": " << notes[i] << std::endl;
}
netrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Packal цыклы lunnamedl Помощь студентам 3 18.12.2009 18:20
pascal цыклы lunnamedl Помощь студентам 1 07.12.2009 19:23
Paskal, цыклы, масивы. Maks:// Помощь студентам 8 10.02.2009 19:03