1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
1

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

20.01.2012, 15:15. Показов 1000. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задано целое число. Используя средства стандартного ввода-вывода, изобразить на экране ромб, меньшая диагональ которого равна заданному числу и параллельна оси Ох, а большая в 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);
}
можно без части про оси
что на что менять? с++ ваще не знаю
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2012, 15:15
Ответы с готовыми решениями:

Перевод кода с Паскаля (перевод в метры)
var a,b,d:integer; c,e:real; begin writeln('1-дециметр 2-километр'); writeln('3-метр ...

Заменить в строке все пробелы на перевод строки, а перевод строки изменить на два перевода
Меня интересует следующий вопрос: как заменить в моем стринге все пробелы на переходы на новую...

Разбиение строки на части, перевод строки в число и перевод числа
Есть задание: 1. Необходимо реализовать консольное приложение, позволяющее манипулировать строкой,...

Перевод с C++ на C#
Перевожу программу с C++ на С#. int main() { int M ; // степень числа 2 (Nx = 2^M) ...

10
873 / 771 / 173
Регистрация: 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;
 
}
0
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
20.01.2012, 18:44  [ТС] 3
ссылку на пример можно?

Добавлено через 2 минуты
и это точно Си?
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
20.01.2012, 18:47 4
График функции в Си/Си++

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

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

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

Добавлено через 59 секунд
и выходит что нада символами рисовать
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
21.01.2012, 10:57 10
Цитата Сообщение от adelok Посмотреть сообщение
стандартный ввод-вывод в Си stdio.h.
это символы без графики
putchar(), printf()

Цитата Сообщение от adelok Посмотреть сообщение
и выходит что нада символами рисовать
если контур делать, тогда проще в двумерном массиве заполнить, а потом его вывести
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
21.01.2012, 13:12 11
А ведь всего лишь нужно было воспользоваться поиском на форуме
Рисование ромба.
1
21.01.2012, 13:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2012, 13:12
Помогаю со студенческими работами здесь

Перевод с C++ на С#
Имеется: case ED_MOBILE: EDIT_MOB(ch, pMob); tArea = pMob-&gt;area; if...

Перевод из C++ в C#
Здравствуйте. Если не сложно, помогите с переводом в C#, буду очень благодарен. #include &lt;cmath&gt;...

Перевод на C++
Помогите перевести этот код на С++...Буду признателен... var n, i, t: integer; a: array of...

Перевод на С++
Добрый день, форумчане, прошу помоч перевести этот код на C++ ref struct ActionSet { int...

Перевод с С на С++
Добрый вечер. Хочу перевести код с использованием pHash алгоритма с &quot;C&quot; на &quot;C++&quot;. Возникли...

Перевод из C++ в C#
Здравствуйте! Может кто-нибудь помочь перевести код из C++ в C# Спасибо! using namespace...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru