Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
nnina
2 / 2 / 1
Регистрация: 12.11.2011
Сообщений: 69
#1

Перевести код с C - C++

17.12.2011, 09:12. Просмотров 436. Ответов 9
Метки нет (Все метки)

Не получается перевести из С в C++:

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
#include <stdio.h>
#include <stdlib.h>
using namespace std;
 
int mycompare(int first, int second)
{
        if(first > second)      return 1;
        else if(first == second)        return 0;
        else if(first < second) return -1;
}
int main()
{
        int a, b, res;
        printf("Input number A:\t");
        scanf("%d", &a);
        printf("Input number B:\t");
        scanf("%d", &b);
        res = mycompare(a, b);
        if(res == 1)    printf("%d > %d\n", a, b);
        else if(res == 0)       printf("%d = %d\n", a, b);
        else if(res == -1)      printf("%d < %d\n", a, b);
        system("pause");
        return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2011, 09:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перевести код с C (C++):

перевести код на С++ или написать свой код
Задано предложение. Составить программу вывода на экран слов, в которых первая...

Visual c++ код перевести в gcc linux код
Ниже есть код. Нужно сделать так, что бы он компилировался и работал в...

Перевести код программы Паскаля в код С++
В массиве Х (15) найти произведение и количество элементов расположенных между...

Перевести код из С++ в С
Что нужно поменять в коде, что бы перевести с плюсов на сишку? #include...

Перевести код на c++
Всем привет! Столкнулся с такой проблемой... есть код на freebasic нужно его...

Перевести код на с++
var f: text; n: integer; rb, re: real; begin WriteLn('Введите N:...

9
Card1nal
6 / 6 / 1
Регистрация: 04.01.2010
Сообщений: 118
17.12.2011, 09:27 #2
В С оно уже не компилируется из-за using, а вот в c++ - должно.
Но, насколько я понимаю, нужно примерно следующее
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int mycompare(int first, int second)
{
        if (first > second)      return 1;
        else if (first == second) return 0;
        else if (first < second) return -1;
}
int main()
{
        int a, b, res;
        std::cout << "Input number A:\t";
        std::cin >> a;
        std::cout << "Input number B:\t";
        std::cin >> b;
        res = mycompare(a, b);
        if(res == 1) 
             std::cout << a << " > " << b << std::endl;
        else if(res == 0)
             std::cout << a << " = " << b << std::endl;
        else if(res == -1) 
             std::cout << a << " < " << b << std::endl;
        system("pause");
        return 0;
}
Ах да, не советую использовать using без крайней на то необходимости - может привести к undefined behaviour
1
nnina
2 / 2 / 1
Регистрация: 12.11.2011
Сообщений: 69
17.12.2011, 09:46  [ТС] #3
Спасибо, скомпилировалась
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.12.2011, 10:22 #4
Функция mycompare определенно уменьшила количество кода и сделала его проще
0
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
17.12.2011, 11:00 #5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Уже бы так сделали
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int mycompare(int first, int second)
{
        return first - second;
}
int main()
{
        int a, b, res;
        std::cout << "Input number A:\t";
        std::cin >> a;
        std::cout << "Input number B:\t";
        std::cin >> b;
        res = mycompare(a, b);
        if(res > 0) 
             std::cout << a << " > " << b << std::endl;
        else if(res == 0)
             std::cout << a << " = " << b << std::endl;
        else 
             std::cout << a << " < " << b << std::endl;
        system("pause");
        return 0;
}
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.12.2011, 11:02 #6
Цитата Сообщение от go Посмотреть сообщение
Уже бы так сделали
Ненадежно. Что будет, если передать два числа близких к INT_MIN?
0
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
17.12.2011, 11:09 #7
fasked, тогда так
C
1
long mycompare(int first, int second)
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.12.2011, 11:10 #8
Цитата Сообщение от go Посмотреть сообщение
тогда так
Тогда чисто технически long не обязан быть больше int
0
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
17.12.2011, 11:20 #9
fasked, Поясните пожалуйста.
signed int (допустим 2 байт) мин = -32768
-32768 - -32767 == 1

Цитата Сообщение от fasked Посмотреть сообщение
Что будет, если передать два числа близких к INT_MIN?
наверное, вы хотели сказать, что
-32768 - + 32767 < -2147483648 (long)
тогда так
C
1
2
3
4
int mycompare(int first, int second)
{
        return (long)first - second;
}
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.12.2011, 11:29 #10
Цитата Сообщение от go Посмотреть сообщение
наверное, вы хотели сказать, что
Да Малость ошибся. Имел в виду такой случай.
C
1
2
3
4
5
6
7
8
9
10
11
#include <limits.h>
#include <stdio.h>
 
int cmp(int a, int b) {
   return a - b;
}
 
int main() {
   printf("%d\n", cmp(INT_MIN, INT_MAX));
   return 0;
}
Первое число меньше второго. Но в результате получается единица.
Цитата Сообщение от go Посмотреть сообщение
тогда так
По этому поводу я уже сказал, что чисто технически long может быть равен int по ширине.

А мораль в том, что для чисел функция бесполезна в данном случае. Ее применение может быть оправдано только как колбэка, например, для qsort. И самым надежным способом будет явное сравнение чисел с помощью if/else. А то могут быть недоразумения, при чем весьма неочевидные.
1
17.12.2011, 11:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2011, 11:29
Привет! Вот еще темы с решениями:

Перевести код в C++
Понимаю, что это не самая лучшая просьба, но я сейчас не обладаю достаточными...

Перевести код с С
Это программа на С, её нужно перевести в С++, что тут нужно изменить??? ...

Перевести код с С
Помогите переделать код з С на С++ #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...

Перевести код на С++ с C#
Помогите написать курсач. Надо игру написать на с++, а написал на с#....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru