Дата и час: 19 Яну 2026, 08:10




Напиши нова тема Отговори на тема  [ 42 мнения ]  Отиди на страница 1, 2, 3  Следваща
Автор Съобщение
 Заглавие: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 12:08 
Offline
От дъжд на вятър

Регистриран на: 11 Сеп 2008, 07:17
Благодарил (а): 2 пъти.
Поблагодарили: 3 пъти.
Едно положително число се нарича автоморфно, ако се съдържа в края на квадрата си. Да се напише програма на С++, извеждаща първите n автоморфни числа.

Може ли помощ, :( ? Трудно ми е това програмиране. Нуждая се от подробни обяснения по програмата, ако може, :? .


Share on Facebook Share on Twitter Share on Orkut Share on Digg Share on MySpace Share on Delicious Share on Technorati
Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 12:22 
Offline
Shall we shag now, or shag later?
Аватар

Регистриран на: 19 Апр 2009, 16:17
Местоположение: Софията
Благодарил (а): 18 пъти.
Поблагодарили: 86 пъти.
Ще ти дам жокер: автоморфни числа може да са тези които завършват на 1,5, или 6. :wink:
Едит: А какво е ограничението за N?Все пак има огромно значение.

_________________
Компютърни науки 1 курс


Последна промяна morfei на 15 Ное 2009, 12:34, променена общо 1 път

Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 12:33 
Offline
От дъжд на вятър

Регистриран на: 11 Сеп 2008, 07:17
Благодарил (а): 2 пъти.
Поблагодарили: 3 пъти.
Можете ли да напишете програмата, не се сещам как ще стане, :? , аз съм начинаещ в програмирането, :? . А и май сте се объркали с това завършване на 1, 5 или 6:
5.5=25 (автоморфно);
6.6=36 (автоморфно);
11.11=121 (това не е автоморфно, защото не завършва на 11);
15.15=225 (това също не е, защото не завършва на 15).
За броя на числата няма ограничение.


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 12:43 
Offline
Shall we shag now, or shag later?
Аватар

Регистриран на: 19 Апр 2009, 16:17
Местоположение: Софията
Благодарил (а): 18 пъти.
Поблагодарили: 86 пъти.
Не съм се объркал! Затова съм написал МОЖЕ, а не СА. Тоест има смисъл да се проверяват само такива числа. Ти си ме разбрал, че всички, които завърват на тези цифра СА. Сега след малко размишления отхвърлям числата завършващи на 1(освен 1, защото е автоморфно). Колкото за N задължително трябва да има ограничение. По този начин човек се ориентира какъв тип да използва, колко да оптимизира алгоритъма и т.н.

_________________
Компютърни науки 1 курс


Последна промяна morfei на 15 Ное 2009, 12:47, променена общо 1 път

Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 12:47 
Offline
Пишеща машина
Аватар

Регистриран на: 08 Авг 2009, 12:35
Местоположение: Плевен/София
Благодарил (а): 40 пъти.
Поблагодарили: 28 пъти.
Ето малко по-дълго решение, за да е по-ясно.
Код:
#include <iostream>

using namespace std;

int main() {
   int n,m; // durjim vuvedenoto chislo
   cin >> n;
   int square = n*n; // durjim kvadrata
   
   int times = 0; // tuk 6te durjim kolko cifri ima vuvedenoto 4islo
   m=n; // polzvame m, za da ne promenqme n

   while(m != 0) {
      m/=10;
      times++;
   } // iz4islqvame kolko cifri ima 4isloto
   bool ok = true; // flagova promenliva
   //proverqvame poslednite times cifri ot kvadrata
   for(int i = 0; i < times; i++) {
      int k = square % 10; // poslednata cifra ot kvadrata
      int j = n % 10; // poslednata cifra ot 4isloto
      if(k != j) {
         ok = false;
         break;
      }
      square/=10; // i delim, za da ne vzimame vinagi edni i su6ti posledni cifri
      n/=10; // su6toto tuk
   }
   //i ako vsi4ko e ok - avtomorfno
   if(ok)
      cout << "avtomorfno";
   else
      cout << "kofti";


   system("PAUSE");
   return 0;
}

_________________
Гейм Дизайн, Gamificiaton, Манипулация :) - http://game-craft.com/blog/


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 12:50 
Offline
Shall we shag now, or shag later?
Аватар

Регистриран на: 19 Апр 2009, 16:17
Местоположение: Софията
Благодарил (а): 18 пъти.
Поблагодарили: 86 пъти.
:shock: :shock: :shock: :shock: :shock:
Не си разбрал правилно задачата. Трябва да се изведат първите N на брой автоморфни числа, а не да се провери дали 1 число е автоморфно. :P

_________________
Компютърни науки 1 курс


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 13:08 
Offline
Пишеща машина
Аватар

Регистриран на: 08 Авг 2009, 12:35
Местоположение: Плевен/София
Благодарил (а): 40 пъти.
Поблагодарили: 28 пъти.
Аз задачата я разбрах ;) Човека да разбере кво се прави, пък после няма да му е проблем да си изведе първите n на брой автоморфни.
Код:
#include <iostream>

using namespace std;
bool avtomorfno(int n) {
   int square = n*n;
   bool ok = true;
   while(n) {
      int j = n % 10;
      int k = square % 10;
      if(j != k) {
         ok = false;
         break;
      }
      n/=10;
      square/=10;
   }
   return ok;
}
int main() {
   int n; // първите n
   cin >> n;
   for(int i = 1; i < n; i++)
      if(avtomorfno(i))
         cout << i << endl;

   system("PAUSE");
   return 0;
}

_________________
Гейм Дизайн, Gamificiaton, Манипулация :) - http://game-craft.com/blog/


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 13:23 
Offline
Shall we shag now, or shag later?
Аватар

Регистриран на: 19 Апр 2009, 16:17
Местоположение: Софията
Благодарил (а): 18 пъти.
Поблагодарили: 86 пъти.
Тази програма извежда автоморфните числа в даден интервал. Върви за N<=8. Нека човека да даде ограничението за N и ще видим до колко ще трябва да се оптимизира.

_________________
Компютърни науки 1 курс


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 13:43 
Offline
Shall we shag now, or shag later?
Аватар

Регистриран на: 19 Апр 2009, 16:17
Местоположение: Софията
Благодарил (а): 18 пъти.
Поблагодарили: 86 пъти.
Ето едно решение, което е значително по-бързо, но пак повтарям - всичко зависи от N. Ако N е повече от 20 трябва да се потърси по-хитър алгоритъм. Ако някой иска обяснение само да каже. :wink:

Код:
#include<iostream>
using namespace std;
bool automorphic(unsigned long long &a)
{
     unsigned long long r=a,t = a*a;
     bool fl = true;
     while(r>0) {
                if((r%10)!=t%10) {fl=false;break;}
                r/=10;t/=10;
     }
     return fl;
}

int main()
{
    unsigned long long i=5,n;
    cin>>n;
    cout<<1<<' ';n--;
    while(n) {
             if(automorphic(i)) {cout<<i<<' ';n--;}
             i++;
             if(n>0 && automorphic(i)) {cout<<i<<' ';n--;}
             i+=9;       
    }
    cout<<endl;
    system("pause");
    return 0;
}

_________________
Компютърни науки 1 курс


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 13:58 
Offline
Shall we shag now, or shag later?
Аватар

Регистриран на: 19 Апр 2009, 16:17
Местоположение: Софията
Благодарил (а): 18 пъти.
Поблагодарили: 86 пъти.
Една малка оптимизацийка: да се замени следния ред:
Код:
unsigned long long r=a,t = a*a;

със
Код:
unsigned long long r = a/10,t = a*a/10;


По принцип изглежда незначителна, но всъщност не е поради големия брой изпълнения на оператора присвояване и деление.

_________________
Компютърни науки 1 курс


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 15 Ное 2009, 14:37 
Offline
Пишеща машина
Аватар

Регистриран на: 08 Авг 2009, 12:35
Местоположение: Плевен/София
Благодарил (а): 40 пъти.
Поблагодарили: 28 пъти.
Чак сега прочетох условието както трябва ;Д, pardon me.
ето обосновка и бързо решение :
http://en.wikipedia.org/wiki/Automorphic_number

_________________
Гейм Дизайн, Gamificiaton, Манипулация :) - http://game-craft.com/blog/


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 21 Ное 2009, 09:57 
Offline
От дъжд на вятър

Регистриран на: 11 Сеп 2008, 07:17
Благодарил (а): 2 пъти.
Поблагодарили: 3 пъти.
morfei написа:
Ето едно решение, което е значително по-бързо, но пак повтарям - всичко зависи от N. Ако N е повече от 20 трябва да се потърси по-хитър алгоритъм. Ако някой иска обяснение само да каже. :wink:

Код:
#include<iostream>
using namespace std;
bool automorphic(unsigned long long &a)
{
     unsigned long long r=a,t = a*a;
     bool fl = true;
     while(r>0) {
                if((r%10)!=t%10) {fl=false;break;}
                r/=10;t/=10;
     }
     return fl;
}

int main()
{
    unsigned long long i=5,n;
    cin>>n;
    cout<<1<<' ';n--;
    while(n) {
             if(automorphic(i)) {cout<<i<<' ';n--;}
             i++;
             if(n>0 && automorphic(i)) {cout<<i<<' ';n--;}
             i+=9;       
    }
    cout<<endl;
    system("pause");
    return 0;
}


Dev C++ дава съобщение за две грешки, :cry: . На вас компилира ли ви я?


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 21 Ное 2009, 14:00 
Offline
Darth Master
Аватар

Регистриран на: 01 Фев 2009, 18:44
Местоположение: Плевен/София
Благодарил (а): 9 пъти.
Поблагодарили: 43 пъти.
Компилира ми го, да! И аз съм с Дев. Мисля, че някъде в нета върлуваше един бъгав Дев, изтегли си друг :roll: :wink:

_________________
Компютърни науки I курс


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 21 Ное 2009, 14:12 
Offline
Shall we shag now, or shag later?
Аватар

Регистриран на: 19 Апр 2009, 16:17
Местоположение: Софията
Благодарил (а): 18 пъти.
Поблагодарили: 86 пъти.
Ако не ми се компилираше нямаше да ти дам кода. :P
Изтегли го от тук:
http://sourceforge.net/projects/dev-cpp ... e/download

_________________
Компютърни науки 1 курс


Върнете се в началото
 Профил  
Отговори с цитат  
 Заглавие: Re: Програма на С++
МнениеПубликувано на: 12 Дек 2009, 10:20 
Offline
От дъжд на вятър

Регистриран на: 11 Сеп 2008, 07:17
Благодарил (а): 2 пъти.
Поблагодарили: 3 пъти.
Да се напише програма, която проверява дали на нечетните позиции в един масив стоят нечетни числа.

Бихте ли написали програмата, за да сверя с това, което аз измислих? Все още ми е малко трудно програмирането на С++, :| .


Върнете се в началото
 Профил  
Отговори с цитат  
Покажи мненията от миналия:  Сортирай по  
Напиши нова тема Отговори на тема  [ 42 мнения ]  Отиди на страница 1, 2, 3  Следваща



Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Преведено от: SEO блог на Йоан Арнаудов