• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

Дали некој знае да работи со покажувачи?

  • Ја почнал/а темата
  • #1

puro

Intern
4 октомври 2007
5
0
Да се напише функција која како влезни аргументи прима два покажувачи кон
цели броеви, а како резултат враќа еден цел број. Двата влезни броеви треба да
се обработат и во покажувачите треба да се зачуваат резултантните.
Обработката се состои во тоа што двата броја треба да се споредат бит по бит во
нивната бинарна претстава. На оние позиции каде што имаат исти битови, тие
треба да се комплементираат, во двата броја. Онаму каде што битовите на исти
позиции се различни во двата броја, ништо не се менува. Функцијата треба да
врати број на комплементирани битови позиции (за еден број).
Пример:
10110110 и 10101101 → 01010010 и 01001001
 
  • Ја почнал/а темата
  • #3

puro

Intern
4 октомври 2007
5
0
ne stvarno ne znam da rabotam so pokazuvaci i referenci zatoa mi treba resen primer za da svatam!!taka polesno se uci so pomos na kompajlerot.
 

DF-1

Intern
13 септември 2007
98
2
Значи вака ... Проследуваш два покажувачи кон цели броеви ... Напиши функција за претворање на декаден во бинарен број (со барање модуло 2), така што функцијата нека прима и покажувач кон знаци (бидејќи има готов метод strlen(), инаку може и со int, ама ќе треба дополнителна променлива за должината). Во низата од знаци се запишуваат бинарните претстави на броевите. Потоа во еден циклус споредувај ги битовите почнувајќи од најмалку значајниот. Циклусот завршува кога еден од броевите ќе снема цифри. Потоа отпочни нов циклус кој ќе има онолку итерации колку што му останале на подолгиот број, а неговите битови спореди ги со нули (бидејќи на бинарен број му се додаваат нули напред). На крајот претвори ги двете добиени бинарни претстави во декадни и ископирај ги во вредностите кон кои покажуваат покажувачите. За вредноста која треба да ја врати функцијата воведи дополнителен бројач, кој се зголемува секогаш кога е извршено комплементирање.

ПС. Ако има библиотека за работа со бинарни броеви (а најверојатно има) искористи ја неа, и проблемот ќе стане тривијален.
 

DF-1

Intern
13 септември 2007
98
2
Е да, во право е _EAX, дури и ако ти напишам код за задачава, не верувам дека ќе сватиш што се случува ако не си ја разбрал суштината на покажувачите ...

Од каде ти е задачава, ако не е тајна ?
 

minimoog

Intern
14 јули 2007
317
16
Код:
unsigned int Neshto(int* a, int* b)
{
    int c = !(*a ^ *b);
    *a ^= c;
    *b ^= c;

    unsigned int d = (unsigned int) !c;

    //MIT HAKMEM
    unsigned int uCount;

    uCount = d - ((d >> 1) & 033333333333) - ((d >> 2) & 011111111111);
    return ((dCount + (dCount >> 3)) & 030707070707) % 63;
}
Не е проверен кодот може да има грешки.
 

Fatihh

Gaining Experience
14 април 2007
372
50
Скопје
Fatihh's setup  
Processor & Cooler
Intel Core i7 - 6700
Motherboard
ASUS TUF
Storage
2TB Western Blue + 480GB SSD A-DATA
PSU
SPIRE SILENTEAGLE 550W REAL
RAM
4x 8GB DDR4
Video card
STRIX GTX 1050Ti 4GB
Case
Case Cooler Master K380
Mouse
Mouse Genesis kypton 500
Keyboard
A4 TEC B318
Monitor
Samsung 27" 4K
OS
win10

fuUuUzZzZy

On your way to fame
14 декември 2007
4,842
885
Ohrid
@stevcooo

Темава е отворена на 05-10-07. Гарантирам дека puro до сега веќе си го нашол решението.
 

Нови мислења

Последни Теми

Статистика

Теми
43,565
Мислења
823,423
Членови
28,069
Најнов член
Na$sko
На врв Дно