Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Olejik7
10 / 10 / 13
Регистрация: 17.02.2014
Сообщений: 58
1

Перевести код из С++ в С

16.07.2014, 12:27. Просмотров 710. Ответов 14
Метки нет (Все метки)

Друзья, я нуждаюсь в вашей помощи!
помогите перевести данный код из С++ в С
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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
int main(int argc, char* argv[])
{
    static char str[256] = "c++ is object-oriented programming language. It was founded by Bjarne Straustrup many yours ago, and became a stadard for programming\0";
    printf("string = %s\n\n", str);
 
    unsigned index = 0; char* pchars[] = { " ", "." };
    while (index != sizeof(pchars) / sizeof(pchars[0]))
    {
        char **words = new char*[256], *temp = new char[256];
        memset((void*)words, 0x00, 1024); strcpy(temp, str);
 
        unsigned max_len = 0, max_pos = 0;
        char* token = strtok(temp, pchars[index]);
        for (int n = 0; token != NULL; n++)
        {
            words[n] = new char[256]; strcpy(words[n], token);
            if (strlen(token) > max_len || max_len == 0)
            {
                max_len = strlen(token);
                max_pos = n;
            }
 
            token = strtok(NULL, pchars[index]);
        }
 
        printf("longest %s = %s len = %d\n",
            (index % 2) ? "phrase" : "word", words[max_pos], max_len);
 
        index++;
    }
 
    _getch();
 
    return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2014, 12:27
Ответы с готовыми решениями:

Ребята,можно ли этот код перевести на чистый си(Код смешан с си++)
Задача: 4 балла: Разработать игровое поле для змейки. Продумать способ хранения змейки,...

Дан код программы на C++, перевести этот код на C
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;string.h&gt; using namespace std; ...

Перевести код с C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;ctime&gt; using namespace std; int main() { ...

Перевести код с C++
Добрый вечер, мне нужно первести данный код на Си, используя FILE класс. IMAGE DAT; ifstream...

Перевести код с C++
Пожалуйста, помогите перевести код в Си #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

14
Vtulhu
425 / 379 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
16.07.2014, 14:20 2
Ничего специфического для C++ там почти что и нет. Проблема не в том, что это C++, а в том, что это говнокод.

Если я правильно понял, надо составить массив фраз, потом выбрать из них самую длинную, потом составить массив слов и выбрать самое длинное. Мне проще переписать с нуля...
0
GyroReaper
8 / 8 / 5
Регистрация: 20.10.2013
Сообщений: 49
19.07.2014, 04:07 3
Ничего менять не нужно. Это и есть обычный Си.
0
m1ssed_0ver
0 / 0 / 0
Регистрация: 15.07.2014
Сообщений: 1
19.07.2014, 04:40 4
Цитата Сообщение от GyroReaper Посмотреть сообщение
Ничего менять не нужно. Это и есть обычный Си.
ага...
Цитата Сообщение от Olejik7 Посмотреть сообщение
new char[256]
0
19.07.2014, 04:40
GyroReaper
8 / 8 / 5
Регистрация: 20.10.2013
Сообщений: 49
19.07.2014, 05:39 5
Действительно, оператора new в чистом Си нет. Посмотрел последний стандарт. Там malloc и realloc за выделение памяти отвечают. Мне препод в вузе балл снизил в свое время за использование функции malloc в чистом си, обосновав это тем, что она устарела, и теперь используют только new. Доверяй теперь этим гуру после такого)
0
uglyPinokkio
326 / 229 / 55
Регистрация: 30.05.2014
Сообщений: 682
19.07.2014, 06:05 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от GyroReaper Посмотреть сообщение
оператора new в чистом Си нет.
А еще там все объявления должны идти до первого исполняемого оператора.

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 <stdio.h>
#include <conio.h>
#include <string.h>
 
int main(int argc, char* argv[])
{
    static char str[256] = "c++ is object-oriented programming language. It was founded by Bjarne Straustrup many yours ago, and became a stadard for programming\0";
    unsigned index = 0; char* pchars[] = { " ", "." };
    printf("string = %s\n\n", str);
 
    while (index != sizeof(pchars) / sizeof(pchars[0]))
    {
        char **words = (char **)malloc(sizeof(char*)*256);
        char *temp = (char *)malloc(sizeof(char)*256);
        unsigned max_len = 0, max_pos = 0;
        char* token = 0;
        int n = 0;
        memset((void*)words, 0x00, 1024); 
        strcpy(temp, str); 
        token = strtok(temp, pchars[index]);
        for (n = 0; token != NULL; n++)
        {
            words[n] = malloc(sizeof(char)*256); strcpy(words[n], token);
            if (strlen(token) > max_len || max_len == 0)
            {
                max_len = strlen(token);
                max_pos = n;
            }
 
            token = strtok(NULL, pchars[index]);
        }
 
        printf("longest %s = %s len = %d\n",
            (index % 2) ? "phrase" : "word", words[max_pos], max_len);
 
        index++;
    }
 
    _getch();
 
    return 0;
}
0
Somebody
2809 / 1620 / 251
Регистрация: 03.12.2007
Сообщений: 4,223
Завершенные тесты: 3
19.07.2014, 15:45 7
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
А еще там все объявления должны идти до первого исполняемого оператора.
С 99-го уже 15 лет прошло, с 11-го с года, а тут такое заявление...
0
Vtulhu
425 / 379 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
19.07.2014, 17:01 8
Цитата Сообщение от Somebody Посмотреть сообщение
С 99-го уже 15 лет прошло, с 11-го с года, а тут такое заявление...
Нашли о чем спорить. Этой программе и C# 5.0 не поможет, она просто дурно написана. Дело ведь не в инструменте, а в том, как его использовать. Кстати, ТС так и не ответил, правильно ли я понял задание. А вчитываться в этот говнокод мне лень, честно говоря. Я бы мог написать на С. Не на "чистом С" (это C89, что ли?), а на грамотном. Что лучше, читать стихи Валерия Брюсова, напечатанные на дешевой бумаге, или богато изданные матерные частушки?
1
uglyPinokkio
326 / 229 / 55
Регистрация: 30.05.2014
Сообщений: 682
19.07.2014, 17:03 9
Цитата Сообщение от Somebody Посмотреть сообщение
С 99-го уже 15 лет прошло, с 11-го с года, а тут такое заявление...

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01

Ему объясните.
0
Vtulhu
425 / 379 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
19.07.2014, 18:31 10
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01
Ему объясните.
Логика такая: в лаптях неудобно ходить по мостовой, поэтому те, кто ходит по мостовой в сапогах - дураки. Конечно, надо мостовые разломать, чтобы все ходили в лаптях по земляным дорогам. Тут и наступит всем счастье!
0
uglyPinokkio
326 / 229 / 55
Регистрация: 30.05.2014
Сообщений: 682
19.07.2014, 18:55 11
Цитата Сообщение от Vtulhu Посмотреть сообщение
Логика такая
MS Visual - один из самых распространенных в коммерческой разработке компиляторов, в режиме C, объявление после исполняемого оператора он считает ошибкой. Остальное - разговоры в пользу бедных.
0
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
20.07.2014, 00:52 12
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
А еще там все объявления должны идти до первого исполняемого оператора.
Все верно. По умолчанию исходный код подразумевается соответствующим ansi c. MS вроде поддерживают c91. Вообще-то MS не пригоден для программирования на c. Есть достойные внимания компиляторы, в т.ч. с поддержкой c11. Для windows использую PallesC, есть и другие.
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
MS Visual - один из самых распространенных в коммерческой разработке компиляторов
Смелое заявление.
1
uglyPinokkio
326 / 229 / 55
Регистрация: 30.05.2014
Сообщений: 682
20.07.2014, 05:45 13
Цитата Сообщение от castorsky Посмотреть сообщение
Смелое заявление.
Возможно, но на мой взгляд, вероятность того, что преподаватель ТС использует MS или Borland, представляется мне сильно выше, чем для Pelles C. Чем он лучше gcc кстати?
0
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
20.07.2014, 16:27 14
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Возможно, но на мой взгляд, вероятность того, что преподаватель ТС использует MS или Borland
К сожалению в большинстве случаев преподаватель не является компетентным в области программирования. Знание языка ничего не дает, но если преподаватель хорошо знаком с теоретическими техниками, используемыми в программировании, то он будет подавать предмет на множестве различных языков. Например, "это называется ленивые вычисления... В качестве подробного описания данной техники рассмотрим несколько примеров на языке haskell... Достоинства и недостатки..." или "есть такая техника -- инкапсуляция. Используется в языках, поддерживающих ОО парадигму... В качестве примеров разберем несколько классов с использованием языка Java... Достоинства и недостатки...".
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Чем он лучше gcc кстати?
Как минимум полной поддержкой c11.
0
uglyPinokkio
326 / 229 / 55
Регистрация: 30.05.2014
Сообщений: 682
20.07.2014, 17:26 15
Цитата Сообщение от castorsky Посмотреть сообщение
то он будет подавать предмет на множестве различных языков. Например, "это называется ленивые вычисления... В качестве подробного описания данной техники рассмотрим несколько примеров на языке haskell...
"Это фантастика"
0
20.07.2014, 17:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2014, 17:26

Перевести код с C++
#include &lt;iostream&gt; using namespace std; void main() { setlocale(LC_ALL, &quot;Russian&quot;); ...

Перевести код на с++
здравствуйте! помогите перевести все на язык с++ #включить &lt;ввструя&gt; #включить &lt;локаль&gt; ...

Перевести код с C++
помогите пожалуйста перевести программу с Си++ на чистый Си.Я кое-что изменил ,а дальше не знаю...


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

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

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