Форум программистов, компьютерный форум CyberForum.ru

Удалить (сделать прозрачными) все непрозрачные кубики, видимые хотя бы с одной из четырех сторон - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Формула, по которой можно вычислить время наступления Рагнарека http://www.cyberforum.ru/cpp-beginners/thread1232196.html
Рагнарек должен наступить с минуты на минуту. Но Один не знает, когда именно он наступит. Локи, как самый умный, сказал Одину формулу, по которой можно вычислить время наступления Рагнарека. К сожалению, Одину с одним глазом сложно уследить за всеми скобками в выражении, поэтому он решил заменить скобки первого уровня на фигурные, а второго уровня – на квадратные, остальные же оставить круглыми....
C++ При выводе минимального элемента последовательности программа выводит слишком большое число При выводе минимального элемента программа выводит слишком большое число. #include <iostream> using namespace std; int main() { setlocale(0,""); int maximum; float numbers, amount, average, maximal_element; float minimal_element; average = 0; http://www.cyberforum.ru/cpp-beginners/thread1232190.html
Sentence. Записать число прописью C++
Once upon a time in a land far far away, inhabited only by math students, Iva and Vedran were discussing self-explanatory sentences. A part of these sentences is exactly one number and it is equal to the total number of letters in the sentence. Some examples are: “This sentence has thirtyone letters.”, “Blah blah seventeen”. Little Jurica overheard his friends' conversation and decided to...
Определить является ли десятичная запись числа симметричной C++
Задание: код: #include<iostream> using namespace std; int main() { int n; cin>>n; cout<<((n/1000==n%10)&&(n/100/10==n%100%10))?1:37<<endl;; return 0;
C++ Как правильно написать функцию push (положить в стек) http://www.cyberforum.ru/cpp-beginners/thread1232179.html
Здравствуйте, господа. Не могу сообразить, как правильно написать функцию push (положить в стек). Ткните меня носом пожалуйста. Всё остальное без ошибок. #include <conio.h> #include <iostream.h> struct Node { int left; Node *next; }; Node *beg = 0;
C++ Как происходит сортировка в данном блоке? void Sort(char *text, int len, TCHAR* ptr, bool newFile) { char *info; int i=0,b=0; char loly; int lol; int j=0; char info1; info=(char*)malloc(len*sizeof(char)); strcpy(info,""); подробнее

Показать сообщение отдельно
Vtulhu
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
23.07.2014, 14:04     Удалить (сделать прозрачными) все непрозрачные кубики, видимые хотя бы с одной из четырех сторон
И ведь не лень людям однообразный говнокод писать четыре раза, а то и больше... Вот эта задача на нормальном С (язык тут не важен, тут важно понять принцип решения, а реализовать его можно грамотно на Бейсике и неграмотно на Джаве). Надеюсь, на С++ переведешь как-нибудь сам. Мне такой ерундой заниматься неохота.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <stdlib.h>     // rand
#include <time.h>       // time
#include <stdio.h>      // putchar, puts
 
#define M 10
#define N 30
 
const char symbols[2] = { '*', 'O' };
 
int cubes1[M][N];
int cubes2[M][N];
 
void fill_cubes(unsigned seed)
{
    srand(seed);
    int i, j;
    for( i = 0; i < M; ++i ) {
        for( j = 0; j < N; ++j ) {
            cubes1[i][j] = rand() & 1;
        }
    }
}
 
int visible1(int x, int y, const int dx, const int dy)
{
    while( 1 ) {
        x += dx;
        if( x < 0 || x > M - 1 ) { break; }
        y += dy;
        if( y < 0 || y > N - 1 ) { break; }
        if( cubes1[x][y] ) { return 0; }
    } 
    return 1;
}
 
int visible4(int x, int y)
{
    return visible1(x, y, -1, 0)
        || visible1(x, y, 1, 0)
        || visible1(x, y, 0, -1)
        || visible1(x, y, 0, 1);
}
 
void remove_visible_cubes()
{
    int i, j;
    for( i = 0; i < M; ++i ) {
        for( j = 0; j < N; ++j ) {
            if( cubes1[i][j] ) {
                cubes2[i][j] = !visible4(i, j);
            }
        }
    }
}
 
void print_cubes(int* cubes)
{
    int i, j;
    for( i = 0; i < M; ++i ) {
        for( j = 0; j < N; ++j ) {
            putchar(symbols[*(cubes + j)]);
        }
        putchar('\n');
        cubes += N;
    }
}
 
int main(void)
{
    fill_cubes(time(NULL));
    puts("All cubes:");
    print_cubes(&cubes1[0][0]);
 
    remove_visible_cubes();
    puts("Non-visible cubes:");
    print_cubes(&cubes2[0][0]);
 
    return 0;
}
 
Текущее время: 23:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru