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

перевод из с++ в с - C++

Восстановить пароль Регистрация
 
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
20.01.2012, 15:15     перевод из с++ в с #1
Задано целое число. Используя средства стандартного ввода-вывода, изобразить на экране ромб, меньшая диагональ которого равна заданному числу и параллельна оси Ох, а большая в 2 раза длиннее меньшей.
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
80
81
82
83
84
85
86
#include <iostream>
#include <string>
#include <iterator>
#include <sstream>
#include <windows.h>
 
#define scp(A, B) setCursorPosition(A, B);
#define wrt(i)          for(int j_i_j = 0; j_i_j < i; j_i_j++) \
                                                std::cout << pm;
 
void cls();
void setCursorPosition(int, int);
 
void printAxis(int n)
{
        {
                cls();
        }
        unsigned char symbols[] = {0xB3, 0x5E, 0x3E, 0xC4, 0xC0};
        std::cout << "Oy\n" << *(symbols + 01) << '\n';
        for(short i = 0; i < static_cast<short>(2*n-1); i++)
                std::cout << *(symbols + 00) << "\n";
        std::cout << *(symbols + 04);
        for(short i = 0; i < static_cast<short>(n+1); i++)
                std::cout << *(symbols + 03);
        std::cout << symbols[2] << "Ox" << std::endl;
}
 
void printDiamond(int n)
{
        unsigned char pm /*paint me*/ = 04;
        for(int i = n; i > 0; i -= 2)
        {
                scp(i, (n-i)/2 + 2)
                wrt(i)
                scp(i+1, (n-i)/2 + 2)
                wrt(i)
                scp(2*n-i, (n-i)/2 + 2)
                wrt(i)
                scp(2*n-i+1, (n-i)/2 + 2)
                wrt(i)
        }
        //comment block below if you don't wanna paint full vertical size
        if(!(!(!(n%2))))
        {
                scp(1, (n-1)/2 + 2)
                wrt(1+1)
                scp(2*n, (n-1)/2 + 2)
                wrt(1+1)
        }
}
 
int main()
{
        std::cout << "Enter size of smaller diamond's diagonal:" << std::endl;
        std::istream_iterator<char> start(std::cin), end;
        std::string input(start, end);
        std::istringstream ss(input);
        int n;
        ss >> n;
        if(n < 4>>1)
        {
                std::cerr << "Invalid number" << std::endl;
                return 0;
        }
        printAxis   (-(-n));
        printDiamond(~(~n));
        scp(2*n+3, 0)
        return 0;
}
 
void cls()
??<
        [url]http://try.google.if.you.dont.understand.this[/url]
        system("cls");
??>;
 
void setCursorPosition(int oyPos, int oxPos)
{
        HANDLE hCon;
        COORD cPos;
        hCon = GetStdHandle(STD_OUTPUT_HANDLE);
        cPos.Y = oyPos;
        cPos.X = oxPos;
        SetConsoleCursorPosition(hCon, cPos);
}
можно без части про оси
что на что менять? с++ ваще не знаю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2012, 15:15     перевод из с++ в с
Посмотрите здесь:

Перевод на С++ C++
Перевод из 2 в 10 сс C++
C++ Перевод из 2-ой в 8-ую СС
Перевод из 16 сс в 4 сс C++
C++ Перевод в 8-ю ЧС
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
20.01.2012, 18:39     перевод из с++ в с #2
adelok, твой пример у меня не запустился.Делал по примеру Jupiter.

Добавлено через 40 секунд
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
#include <Windows.h>
#include <stdlib.h>
#include <iostream>
#include <math.h>
 
int main(void)
{
    setlocale(LC_CTYPE,"");
    int cx = 300;
    int cy = 170;
    int  ey, ax, bx, inp = 0 ;
    printf("Введите значение мал. диагонали\t");
    scanf_s("%d",&inp );
    
    HDC hDC = GetDC(GetConsoleWindow());
    HPEN Pen = CreatePen( PS_SOLID, 2, RGB(255, 255, 255));
    SelectObject( hDC, Pen );
    ax = inp + cx;
    MoveToEx( hDC, cx, cy, NULL );
    LineTo( hDC, ax, cy );
    bx = cx - inp ;
    MoveToEx( hDC, bx, cy, NULL );
    LineTo( hDC,  cx, cy );
    ey = inp * 2;
    MoveToEx( hDC, cx, cy, NULL );
    LineTo( hDC,  cx, cy + ey );
    MoveToEx( hDC, cx, cy, NULL );
    LineTo( hDC,  cx, cy - ey );
 
      MoveToEx( hDC, cx, cy + ey, NULL );
      LineTo( hDC, ax, cy );
       MoveToEx( hDC, cx, cy - ey, NULL );
      LineTo( hDC, ax, cy );
      MoveToEx( hDC, cx, cy + ey, NULL );
      LineTo( hDC, bx, cy );
      MoveToEx( hDC, cx, cy - ey, NULL );
      LineTo( hDC, bx, cy );
 
    system("pause");
    return 0;
 
}
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
20.01.2012, 18:44  [ТС]     перевод из с++ в с #3
ссылку на пример можно?

Добавлено через 2 минуты
и это точно Си?
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
20.01.2012, 18:47     перевод из с++ в с #4
График функции в Си/Си++

Добавлено через 1 минуту
#include <iostream> -в моем примере эта строка лишняя
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
20.01.2012, 18:48  [ТС]     перевод из с++ в с #5
у мя ругается на библиотеку windows.h и пишет что iostream применим в с++
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
20.01.2012, 18:50     перевод из с++ в с #6
У меня Visual C++ 2010. так что .
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
20.01.2012, 19:02  [ТС]     перевод из с++ в с #7
ещё бы вариант без windows.h и с применением циклов
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.01.2012, 09:11     перевод из с++ в с #8
Цитата Сообщение от adelok Посмотреть сообщение
C++
1
if(!(!(!(n%2))))
какая-то умность

Цитата Сообщение от adelok Посмотреть сообщение
Задано целое число. Используя средства стандартного ввода-вывода, изобразить на экране ромб, меньшая диагональ которого равна заданному числу и параллельна оси Ох, а большая в 2 раза длиннее меньшей.
найти координаты вершин
соединить их функцией, которая рисует отрезок для любых двух точек
(это для контура)
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
21.01.2012, 10:21  [ТС]     перевод из с++ в с #9
пример можно?

стандартный ввод-вывод в Си stdio.h.

Добавлено через 59 секунд
и выходит что нада символами рисовать
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.01.2012, 10:57     перевод из с++ в с #10
Цитата Сообщение от adelok Посмотреть сообщение
стандартный ввод-вывод в Си stdio.h.
это символы без графики
putchar(), printf()

Цитата Сообщение от adelok Посмотреть сообщение
и выходит что нада символами рисовать
если контур делать, тогда проще в двумерном массиве заполнить, а потом его вывести
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2012, 13:12     перевод из с++ в с
Еще ссылки по теме:

Перевод if(n*n+m*m=i) then if(i<>a[c-1]) на с++ C++
C++ Перевод C#->C++
Перевод из C# в С++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
21.01.2012, 13:12     перевод из с++ в с #11
А ведь всего лишь нужно было воспользоваться поиском на форуме
Рисование ромба.
Yandex
Объявления
21.01.2012, 13:12     перевод из с++ в с
Ответ Создать тему
Опции темы

Текущее время: 02:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru