Martin Stoyanov
unread,Jun 24, 2013, 6:04:16 AM6/24/13Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to prog1...@googlegroups.com
Zadachata ot posledniq chas po programirane za 15 tochki:
#include <stdio.h>
#include <stdlib.h>
typedef struct Queue Queue;
typedef struct Item Item;
struct Queue
{
Item *head;
Item *tail;
int count;
};
struct Item
{
int value;
Item *next;
};
Queue *queue_create();
void queue_enqueue(Queue *queue, int element);
int queue_dequeue(Queue *queue);
int main()
{
Queue *queue = queue_create();
int c, digit, count = 0;
while ((c = getchar()) != EOF)
{
digit = c - 48;
if (digit == 0 || digit == 1)
{
queue_enqueue(queue, c - 48);
count++;
}
}
int i,number = 0;
for (i = count - 1; i >= 0; i--)
{
if (queue_dequeue(queue) == 1)
{
number = number + exponent(i);
}
}
printf("%d", number);
return 0;
}
Queue *queue_create()
{
Queue *queue = (Queue *)malloc(sizeof(Queue));
queue->head = NULL;
queue->tail = NULL;
return queue;
}
void queue_enqueue(Queue *queue, int element)
{
Item *new_item = (Item *)malloc(sizeof(Item));
new_item->value = element;
new_item->next = NULL;
if(queue->head == NULL)
{
queue->head = new_item;
queue->head->next = queue->head;
queue->tail = new_item;
}
else
{
queue->tail->next = new_item;
queue->tail = queue->tail->next;
}
}
int queue_dequeue(Queue *queue)
{
if(queue->head != NULL && queue->tail != NULL)
{
Item *result_item = queue->head;
int result = result_item->value;
queue->head = queue->head->next;
free(result_item);
return result;
}
else
{
return -1;
}
}
int exponent(int n)
{
int number = 2, i;
if (n == 0)
{
number = 1;
return number;
}
else
{
for (i = 1; i < n; i++)
{
number *= 2;
}
return number;
}
}
Realizirana e s dinamichna opashka(dynamic queue).Purvo se suzdava funkciq za stepen na dvoikata(v sluchaq int exponent).Sled tova shte izvikame funkciqta vav main-a.Ako kompilirame samo int exponent, pri podadena stoinost na vhoda, programata shte povdiga number-a, koito e 2 na stoinostta, koqto sme podali.Ako podadem 4, otgovora shte e 16.Tolkova za Funkciqta sas stepenta.
V main-a suzdavame opashka i dokato vzimame vsqko simvolche, koeto podavame na vhoda i go enqueue-vame(slagame/pushvame) vav opashkata, kato priemame cifri, koito sa samo 0 i 1, digame count-a za vsqka vkarana cifrichka.V posledniq cikul for, veche dequeuevame otgovora, poluchen ot funkciikata za stepen.