Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Задачки по С/С++
OldTeam.Ru > Творчество и креатив > Программирование
Бисмарк
1. После выполнения следующего кода на C, что находится в переменных x и y?

Код
int x, y;
x = 1;
y = 2;

x = x^y;
y = x^y;
x = x^y;


2. Сколько новых процессов порождает следующий код на С?

Код
for(i=0;i<5;i++)
     fork();
Бисмарк
3. Что возвращает функция
Код
execve()

в случае удачного завершения?
Бисмарк
4.
1.
Код
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    printf("Hello world");
    fork();
    return 0;
}
% gcc test.c
% ./a.out
Hello worldHello world


2.
Код
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    printf("Hello world\n");
    fork();
    return 0;
}
% gcc test.c
% ./a.out
Hello world


Объяснить происходящее.
Armis
3. Значение execve() не возвращается при успешном выполнении программы, а код, данные, инициализированные данные и стек вызвавшего процесса записываются как код, данные и стек загруженной программы.
Бисмарк
А вот еще интересная задачка: написать короткую прогу, которая сама бы выводила свой исходный код.
WishMaster
Цитата(Бисмарк @ 18.8.2007, 19:50) *
1. После выполнения следующего кода на C, что находится в переменных x и y?

Код
int x, y;
x = 1;
y = 2;

x = x^y;
y = x^y;
x = x^y;


x=2, y=1...

Ясно как день..
^ - побитовое исключающее или...

Код
x = 1;//x=0b~01
y = 2;//y=0b~10
x = x^y;//x=0b~11 или же 3
y = x^y;// y=0b~01 или 1
x = x^y;//x=0b~10 или 2


Вроде программа должна работать так..
Бисмарк
Вот вам еще задачка. Посложнее.

Алиса хочет послать Бобу важное тайное сообщение. К сожалению, канал, по которому они общаются, прослушивается Гэбней Кровавой, а у Алисы и Боба есть только возможность шифровать сообщения посредством XOR-инья с ключом произвольной длины на своих компьютерах.

То есть, Алиса может заXORить свое сообщение и передать Бобу, и Боб может заXORить какое-нибудь сообщение и передать Алисе, но ключи свои они передать друг другу не могут. И даже не могут сообщить друг другу, какой длины эти ключи.

Алиса и Боб в отчаянии. Но Добрый Дядюшка знает алгоритм, по которому Алиса может послать Бобу свое сообщение, а Боб прочитать его, не используя ничего, кроме указанных средств.

Найдите алгоритм Доброго Дядюшки.
WishMaster
Цитата(Бисмарк @ 18.8.2007, 19:58) *
4.
1.
Код
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    printf("Hello world");
    fork();
    return 0;
}
% gcc test.c
% ./a.out
Hello worldHello world


2.
Код
#include <stdio.h>
#include <unistd.h>

int main(void)
{
    printf("Hello world\n");
    fork();
    return 0;
}
% gcc test.c
% ./a.out
Hello world


Объяснить происходящее.


fork(); - этосоздание процесса потомка на основании копирования процесса родителя,
ными словами полсле fork() идете пседо распараллеливание пргпаммы...
т.е. printf в одном случае вызывается и в родительском прочессе и в дочернем, а во втором случае только в дочернем...
Видимо так..

О добром дядюшке подумаю на досуге
krink
Цитата(Бисмарк @ 17.4.2008, 15:35) *
Вот вам еще задачка. Посложнее.

Алиса хочет послать Бобу важное тайное сообщение. К сожалению, канал, по которому они общаются, прослушивается Гэбней Кровавой, а у Алисы и Боба есть только возможность шифровать сообщения посредством XOR-инья с ключом произвольной длины на своих компьютерах.

То есть, Алиса может заXORить свое сообщение и передать Бобу, и Боб может заXORить какое-нибудь сообщение и передать Алисе, но ключи свои они передать друг другу не могут. И даже не могут сообщить друг другу, какой длины эти ключи.

Алиса и Боб в отчаянии. Но Добрый Дядюшка знает алгоритм, по которому Алиса может послать Бобу свое сообщение, а Боб прочитать его, не используя ничего, кроме указанных средств.

Найдите алгоритм Доброго Дядюшки.


Алиса ксорит свое сообщение, передает Бобу. Боб в свою очередь ксорит принятое сообщение и отсылает обратно. Алиса повторно ксорит сообщение и отсылает Бобу. Боб ксорит сообщение и таким образом получает расшифрованное сообщение Алисы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2012 IPS, Inc.