Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 16.01.2011, 12:49   #1
Mitde
Новичок
Джуниор
 
Регистрация: 15.01.2011
Сообщений: 5
По умолчанию если число содержит цифру, тогда...

зравствуйте, у меня есть такая задача, но решит не получается. суть в том, что не могу понять, каким символом нужно обозначить не имеющие значения в числе цифры.
нужно подсчитать все числадо N, содержащие 1 в десятичной записи себя.


Код:
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
int main(int argc, char** argv)
{
        int N, summa=0;
        cout<<"Input the number of numers: "<<endl<<endl;
        cin>>N;
                for (int i; i<N; i++) {
\\проблема в этой строке: invalid inderiction
                        if (i==*1&&i==1*) summa=summa+1;}

                cout<<"Summa = "<<summa;

        cout<<"Press any key to continue...";
        getch ();
        return 0;
}
"Добро и зло - суть предрассудки божьи" - сказала змея. Но и сама змея была предрассудком божьим.
Mitde вне форума Ответить с цитированием
Старый 16.01.2011, 15:23   #2
Locker
 
Регистрация: 15.01.2011
Сообщений: 7
По умолчанию

Я правда сам учусь только, но попробовал решить Вашу задачу и получилось так

-del-

Последний раз редактировалось Locker; 16.01.2011 в 20:15.
Locker вне форума Ответить с цитированием
Старый 16.01.2011, 15:40   #3
Mitde
Новичок
Джуниор
 
Регистрация: 15.01.2011
Сообщений: 5
По умолчанию

Locker, спасибо, что откликнулись!
компилятор выдает, что сумма =1 постоянно, какие бы числа я не вводил. мне нужно подсчитать сумму чисел, в которых есть 1. типа 1,10,11,21,31,41,51,61 ну и так далее
"Добро и зло - суть предрассудки божьи" - сказала змея. Но и сама змея была предрассудком божьим.
Mitde вне форума Ответить с цитированием
Старый 16.01.2011, 16:14   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 946
По умолчанию

Цитата:
Сообщение от Mitde Посмотреть сообщение
\\проблема в этой строке: invalid inderiction
if (i==*1&&i==1*) summa=summa+1;}
Если бы только в ней...
...
Код:
#include <iostream>
using namespace std;

#define DEBUG_PRINT

unsigned int GetLowestDecDigit( unsigned int* n ) {

   unsigned int digit = *n % 10 ;
   *n = *n / 10 ;

   return digit ;

}


main() {

   bool           hasDigit0 ;
   const unsigned int   digit0 = 1 ;
   unsigned int   i ,
                  iFoo ,                  
                  n = 12, 	// Сделать ввод вместо присваивания
                  digit ,
                  s ;

   s = 0 ;
   for ( i = 1; i <= n; i++ ) {
      hasDigit0 = false ;
      iFoo = i ;
      do { 
         digit = GetLowestDecDigit( &iFoo ) ;
         if ( digit == digit0 ) {
            hasDigit0 = true ;
            break ;
         }
      } while ( iFoo != 0 ) ;
 
#ifdef DEBUG_PRINT      
      cout << "The natural number " << i ;
      if ( hasDigit0 )
         cout << " contains " ;
      else
         cout << " doesn't contain " ;
      cout << '\"' << digit0 << '\"' << endl ;
#endif
      if ( hasDigit0 )
         s += i ;
   }

   cout << "S = " << s << endl ;

   cin.get() ;

}
Ну и, если преподаватель не окончательно вами затуркан, готовьтесь к вопросу "Зачем Вы ввели в программу переменную iFoo ?"...
Vago вне форума Ответить с цитированием
Старый 16.01.2011, 16:46   #5
Locker
 
Регистрация: 15.01.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Mitde Посмотреть сообщение
Locker, спасибо, что откликнулись!
компилятор выдает, что сумма =1 постоянно, какие бы числа я не вводил.
Ой, логическую ошибочку допустил в одном месте.

Цитата:
мне нужно подсчитать сумму чисел, в которых есть 1. типа 1,10,11,21,31,41,51,61 ну и так далее
То есть если я ввёл 61, должно показать число 8? Или 1+10+11+21+31+41+51+61 и показать эту сумму?

Последний раз редактировалось Locker; 16.01.2011 в 16:50.
Locker вне форума Ответить с цитированием
Старый 16.01.2011, 16:59   #6
-LeV-
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 29
По умолчанию

чего-то вы намудрили очень...
Код:
int main(int argc, char* argv[])
{
  int n;
  cin >>n;
  for(int i = 0; i<n; i++){
    int k = i;
    while(k>0){
      if(k%10 == 1){
        cout<<i<<"\n";
        break;
      }
      k /= 10;
    }
  }
  system("PAUSE");
  return 0;
}
-LeV- вне форума Ответить с цитированием
Старый 16.01.2011, 17:15   #7
Mitde
Новичок
Джуниор
 
Регистрация: 15.01.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Locker Посмотреть сообщение
Ой, логическую ошибочку допустил в одном месте.


То есть если я ввёл 61, должно показать число 8? Или 1+10+11+21+31+41+51+61 и показать эту сумму?
должно подсчитать сумму чисел, содержащих 1. Т.е. должно 8 показать
"Добро и зло - суть предрассудки божьи" - сказала змея. Но и сама змея была предрассудком божьим.
Mitde вне форума Ответить с цитированием
Старый 16.01.2011, 17:28   #8
Locker
 
Регистрация: 15.01.2011
Сообщений: 7
По умолчанию

Ну тогда вот, -LeV- сделал правильный алгоритм
Полностью это будет выглядеть так:
Код:
#include <iostream>
using namespace std;
//#pragma hdrstop
int main()
{
	int n, k, summa;
	while(true)
	{
		n = 0, summa = 0;
		cout << "Input: ";
		cin >> n;
                if(n == 0) break;
		for(int i = 0; i <= n; i++)
		{
			k = i;
			while(k > 0)
			{
				if(k%10 == 1)
				{
					cout << i << endl;
					summa++;
					break;
				}
				k /= 10;
			}
		}
		cout << "Summa = " << summa << endl;
	}
	cin.get();
    return 0;
}

Последний раз редактировалось Locker; 16.01.2011 в 17:38.
Locker вне форума Ответить с цитированием
Старый 16.01.2011, 17:44   #9
Mitde
Новичок
Джуниор
 
Регистрация: 15.01.2011
Сообщений: 5
По умолчанию

Огромнейшее ПАСИБА! вы меня просто безумно выручили!
"Добро и зло - суть предрассудки божьи" - сказала змея. Но и сама змея была предрассудком божьим.
Mitde вне форума Ответить с цитированием
Старый 02.04.2011, 22:34   #10
Trust_357
Пользователь
 
Регистрация: 10.03.2011
Сообщений: 68
По умолчанию

Код:
#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
	setlocale(LC_CTYPE, "Rus");
	int n=0,sum=0;
	bool x=0;
	cout<<"\t\tВведите число конец диапазона\n\n";
	cin>>n;
	for(int i=0,m=0,k=0;i<=n;i++)
	{
		m=i;
		x=0;
		for(;m>0;)
		{
			k=m%10;
			m/=10;
			if(k==1||m==1)
				x=1;
		}
		if(x==1)
			sum+=i;
	}
	cout<<"\t\tСумма чисел в данном диапазоне равна "<<sum<<"\n\n";
}
Trust_357 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано целое число. Уменьшить каждую цифру этого числа на 1. Makcumqa Помощь студентам 2 18.03.2010 08:09
Дано натуральное число n. Определить наименьшую цифру с чётным номером - Задача по Си Lexeres Помощь студентам 6 16.11.2009 19:24
1) Дано натуральное число N. Указать N-ую цифру последовательности 1123581321…, в которой выписаны подр halk Помощь студентам 1 08.10.2009 17:28
справка о междугороднем тел. разговоре содержит: номер телефона абонента(6 цифр),дату(год, месяц, число) @RH@nhel Помощь студентам 2 21.06.2009 09:12
Как изменить цвет текста на всей строке в RichEdit, если строка содержит определенное слово?? IIpopoK Общие вопросы Delphi 0 22.06.2008 06:57


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840