1

Тема: Як конвертувати С++ в C???

Дайте конвертер або покажiть як конвертувати код на С++ в С!

#include <iostream>
#include <ctime> 
using namespace std;
 
int main()
{
    srand((int)time(0));
    const int n = 10;
    int a[n];
    
    for(int i=0; i<n; i++)
    {
        a[i]=rand()%33-12;        
        cout <<a[i]<< " ";
    }    
    cout <<endl; 
    
    for(int i=0; i<n; i++)
    {
        if(a[i]<0) a[i]=a[i]*100;
        else if(a[i]>0) a[i]=1;
        cout <<a[i]<< " ";
    } 
    cout <<endl;
system("pause");
return 0;
}

2

Re: Як конвертувати С++ в C???

*WALL*
Спершу вони пишуть на C++ так, ніби це C, а потім не можуть чомусь переписати на нормальному C.
Почитайте щось про printf, ось перший-ліпший сайт.

3

Re: Як конвертувати С++ в C???

Ось вам на C++:

#include <iostream>
#include <random> 
 
int main()
{
    std::default_random_engine generator;
    std::uniform_int_distribution<int> distribution(-12,21);

    const int n = 10;
    int a[n];

    for(int &x: a)
        std::cout << (x = distribution(generator)) << " ";
    std::cout << std::endl;
    
    for(int x: a)
        std::cout << (x<=0?x*100:1) << " ";
    std::cout <<std::endl;
    
    system("pause");
    return 0;
}

4

Re: Як конвертувати С++ в C???

Чи навіть

#include <iostream>
#include <random> 
#include <algorithm>
 
int main()
{
    std::default_random_engine generator;
    std::uniform_int_distribution<int> distribution(-12,21);

    const int n = 10;
    int a[n];
    
    std::generate(std::begin(a), std::end(a), [&](){return distribution(generator);});
    std::for_each(std::begin(a), std::end(a), [&](int x){std::cout<<x<<" ";});
    std::cout << std::endl;
    std::for_each(std::begin(a), std::end(a), [&](int x){std::cout<<(x<=0?x*100:1)<<" ";});
    std::cout << std::endl;
    
    system("pause");
    return 0;
}

На ваш смак.

Подякували: SilverST1

5

Re: Як конвертувати С++ в C???

Дякую але минi треба навпаки, на С переписати код! Щоб копiлювати як С. Як це зробити??

6

Re: Як конвертувати С++ в C???

koala написав:

*WALL*
Спершу вони пишуть на C++ так, ніби це C, а потім не можуть чомусь переписати на нормальному C.
Почитайте щось про printf, ось перший-ліпший сайт.

Та чого, а мене повеселило :)

7 Востаннє редагувалося koala (10.09.2020 17:27:19)

Re: Як конвертувати С++ в C???

SilverST написав:

Дякую але минi треба навпаки, на С переписати код! Щоб копiлювати як С. Як це зробити??

Знаєте, жарти жартами, але це починає набридати. Знову казка про мотузочку.
Вам НЕ ТРЕБА "перекладати" цей код з C на C++. Якщо вам викладач дав таке завдання - напишіть на нього заяву в деканат, що він неадекват. Якщо він дав завдання, а ви нагуглили код не тією мовою і тепер намагаєтеся перекласти - то не треба так, напишіть власний код. Якщо ви не хочете писати код - переводьтеся на іншу спеціальність. Або отримуйте справедливу двійку. В чому проблема? Що саме вам треба?

Chemist-i написав:

Та чого, а мене повеселило :)

Ну так я теж пожартував.

Подякували: leofun011

8

Re: Як конвертувати С++ в C???

koala написав:

Вам НЕ ТРЕБА "перекладати" цей код з C на C++. Якщо вам викладач дав таке завдання - напишіть на нього заяву в деканат, що він неадекват. Якщо він дав завдання, а ви нагуглили код не тією мовою і тепер намагаєтеся перекласти - то не треба так, напишіть власний код. Якщо ви не хочете писати код - переводьтеся на іншу спеціальність. Або отримуйте справедливу двійку. В чому проблема? Що саме вам треба?.

я нагуглив алгоритм на мовi С++! А ми вчимо мову С, тому треба код на нiй, не на С++ , а на чистому С!!! От як це перекласти.

9

Re: Як конвертувати С++ в C???

SilverST, модератори вас не зрозуміли.
Перефразуйте запитання..
Типу:
Є такий алгоритм(опис алгоритму)
Тре рішення на мові C.
Є такий-то код, але при компіляції викликаються такі-то помилки.
Компілятор такий-то.
Мова C99.

Так швидше знайдуться бажаючі допомогти.

Подякували: Chemist-i, leofun012

10

Re: Як конвертувати С++ в C???

не зрозуміли і забанили...

11

Re: Як конвертувати С++ в C???

Як було сказано вище, все, що в цій програмі треба змінити, щоб вона була сумісною з Сі — переробити операції вводу-виводу. Ну і також виправити інклуди на сішні, замість iostream узяти stdio.h, у якому лежить згаданий вище printf; замість ctime — time.h; рядок з namespace викинути — він зайвий.

Якщо проблема в тому, що ви не розумієте, що робить cout<< (а це головне джерело несумісностей), то це просто операція виводу — значення, що йдуть після кожного << після cout, виводяться на стандартний вивід; у Сі для цього використовується функція printf. Наприклад,

cout <<a[i]<< " ";

тут відповідає сішному

printf("%d ", a[i]);

(якщо дані, які виводяться, мають не тип int, рядок формату слід змінити відповідно до типу — операція виводу в C++ уміє автоматично визначати тип та вибирати правильний спосіб виводу, тоді як у C при роботі з printf цю роботу покладено на програміста).
Сіплюсплюсний endl — це кінець рядка, в Сі для цього треба вивести на друк символ '\n'.
Ніби більше відмінностей не бачу.

Подякували: leofun01, Droid 772

12

Re: Як конвертувати С++ в C???

SilverST написав:

я нагуглив алгоритм на мовi С++! А ми вчимо мову С, тому треба код на нiй, не на С++ , а на чистому С!!! От як це перекласти.

Ви вчите мову C. Так нащо ви гуглите код на C++? Пишіть тою мовою, яку вчите, а не гугліть. Ви ж не гуглити вчитеся, а програмувати, правда?
Якби це були не мови програмування, а людські мови, ви б вважали адекватним питання "Ми вчимо англійську, нам задали написати оповідання, я нагуглив оповідання німецькою, як перекласти"?

Подякували: leofun011

13

Re: Як конвертувати С++ в C???

Проте, якби вони вчили C++, а автор теми нагуглив код на Сі, то, можливо, йому й конвертувати нічого не довелося б — за умови, що знайдений код валідний для обох мов.

14 Востаннє редагувалося Droid 77 (11.09.2020 22:01:15)

Re: Як конвертувати С++ в C???

P.Y. написав:

тут відповідає сішному

Гадаю ще трохи треба додати інформації, бо хтось може не зрозуміти.
Ще треба додати:
stdlib.h, бо не спрацює srand, rand і скоріше за все system
стрічку:

int main()

замінити на

int main(void)

замість:

cout <<endl;

треба

printf("\n");

І ото все зберегти в якомусь там main.c, бо якщо буде наприклад main.cpp то С99 скаже що він не розуміє ObjectC
І вийде щось приблизно отаке:

main.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h> 

//using namespace std;
//============================== 
int main(void){
    srand((int)time(0));
    const int n = 10;
    int a[n];
// for one 
    for(int i=0; i<n; i++){
        a[i]=rand()%33-12;        
        //cout <<a[i]<< " ";
        printf("%d",a[i]);}
        //cout <<endl;
        printf("\n");
// for two   
    for(int i=0; i<n; i++){
        if(a[i]<0) a[i]=a[i]*100;
        else if(a[i]>0) a[i]=1;
        //cout <<a[i]<< " ";
        printf("%d",a[i]);}
        //cout <<endl;
        printf("\n");
    system("pause");
return 0;
}

//От і вся конвертація

Подякували: SilverST1

15

Re: Як конвертувати С++ в C???

   system("pause")
        //cout <<a[i]<< " ";
        printf("%d",a[i]);}
        //cout <<endl;
        printf("\n");

Оце ви індус!
http://replace.org.ua/extensions/om_images/img/5f5bdb1a53b6c/1f1ee-1f1f3.png

Подякували: wander, /KIT\, leofun013

16 Востаннє редагувалося wander (11.09.2020 22:20:05)

Re: Як конвертувати С++ в C???

В 2к20 хтось все ще використовує system pause??
Мда..

Подякували: /KIT\, leofun012

17 Востаннє редагувалося Droid 77 (11.09.2020 23:58:12)

Re: Як конвертувати С++ в C???

0xDADA11C7 написав:

Оце ви індус!
http://replace.org.ua/extensions/om_images/img/5f5bdb1a53b6c/1f1ee-1f1f3.png

Я хоч і індус,

My Code

https://replace.org.ua/uploads/images/9850/32897b7df00aac739282da4d75a0c234.jpeg

але перший пост прочитав. Там людина просить конвертувати якусь фігню на інший стандарт мови. От і конвертував з поясненнями. Отак як є.

Подякували: cheappi3861

18

Re: Як конвертувати С++ в C???

int main()

замінити на

int main(void)

Новітнє збочення. В сішнику досіплюсплюсних часів і слова такого — воїд — не було. Це вже потім, відносно недавно, стандартизатори Сі набралися дурниць у Страуструпа.

19

Re: Як конвертувати С++ в C???

Droid 77 написав:

Я хоч і індус,

але перший пост прочитав. Там людина просить конвертувати якусь фігню на інший стандарт мови. От і конвертував з поясненнями. Отак як є.

І на всі цих чотирьох джерелах вчать виводити цілі числа у рядок якось так:

1220-2440434103-54-543654-4343-300121345-45-44

Droid 77 написав:
        //cout <<a[i]<< " ";
        printf("%d",a[i]);}

Пробіл куди дівся?

20

Re: Як конвертувати С++ в C???

P.Y. написав:
int main()

замінити на

int main(void)

Новітнє збочення. В сішнику досіплюсплюсних часів і слова такого — воїд — не було. Це вже потім, відносно недавно, стандартизатори Сі набралися дурниць у Страуструпа.

«відносно недавно» — це десь всередині 1980-тих. Бо в ANSI C (C89, K&R#2) void вже був.

Подякували: wander, koala, leofun013