Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2015, 13:02   #1
MorgunZ
Пользователь
 
Регистрация: 12.03.2015
Сообщений: 60
По умолчанию c++ ansi c

Здравствуйте, написал небольшую первую программу на c++, а потом мне сказали, что она должна быть на ANSI C, что это значит?
Как изменить этот код под стандарт ANSI C? Или соответствует ли этот код ansi c?

Код:
#include <cstdlib>
#include <iostream>

using namespace std;



int main(int argc, char *argv[])
{

 int aa;
 int bb;   
    cout<<"Enter the film in format [Name Year Rating] "<<endl;
    string films[6]; //list of films   
    for(int i = 0; i<=6; i++) //заносим все фильмы в массив 0..6 
    {
            getline(cin,films[i]); //заносим строку пользователя в ячейку массива с индексом i
            if(7-(i+1) == 0)
            {
                       cout<<"Thank you."<<endl;
            } else
              cout<<"Ok, enter another " << 7-(i+1)<<" films."<<endl;   
    }    
    for (int i=0; i<7; i++)  //сортируем по году, пузырьковый алгоритм, медленный, но простой. Для масива 0..6 будет вполне быстро
    {
        for(int i=0; i<7; ++i)
         for(int j=i+1; j<7; ++j){
              string strj = films[j];   
              aa = strj.find_last_of(" ");
              bb = strj.find_last_of(" ", strj.length() - (strj.length() - aa) - 2);
              string ratingj = strj.substr(aa+1, bb); //рейтинг j
              strj = strj.substr(0, strj.length() - ratingj.length() - 1);
              aa = strj.find_last_of(" ");
              int yearj= atoi(strj.substr(aa+1, strj.length()).c_str()); //год j
              
              string stri = films[i];   
              aa = stri.find_last_of(" ");
              bb = stri.find_last_of(" ", stri.length() - (stri.length() - aa) - 2);
              string ratingi = stri.substr(aa+1, bb); //рейтинг i 
              stri = stri.substr(0, stri.length() - ratingi.length() - 1);
              aa = stri.find_last_of(" ");
              int yeari= atoi(stri.substr(aa+1, stri.length()).c_str()); //год i
              
          if(yearj<yeari)swap(films[i],films[j]);
         }
    }
    string rating;// рейтинг
    cout<<endl<<"List of ur films:"<<endl;
    for(int i=0; i<7; ++i) //выводим готовый список
    {
      string data;
      data = films[i];
      aa = data.find_last_of(" ");
      bb = data.find_last_of(" ", data.length() - (data.length() - aa) - 2);
      rating = data.substr(aa+1, bb); //рейтинг 
      double r = atof(rating.c_str()); //рейтинг в float переменной
      int r2 = int(r + 0.5); //округленный до целого числа рейтинг
       
      cout<<films[i].substr(0,aa+1); 
      for(int j = 0; j < r2; j++) //добавляем звездочек, сколько нужно.
          cout<<"*";
      cout<<endl;        
    }

    cout<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
MorgunZ вне форума Ответить с цитированием
Старый 11.04.2015, 13:11   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
что она должна быть на ANSI C, что это значит?
https://ru.wikipedia.org/wiki/ANSI_C

Цитата:
Как изменить этот код под стандарт ANSI C? Или соответствует ли этот код ansi c?
У вас С++ потоки в программе, какое соответствие С?
p51x вне форума Ответить с цитированием
Старый 11.04.2015, 13:14   #3
MorgunZ
Пользователь
 
Регистрация: 12.03.2015
Сообщений: 60
По умолчанию

Так и не могу конкретно понять, как писать на ansi c. Из этого кода можно сделать чистый ansi c, если по убирать разные функции, которые содержит в себе c++ но не содержит ansi c? был бы вам благодарен, если бы вы перечислили что из этого когда не относится к ansi c

К примеру, я так понял, что cout нужно по заменять на printf ? правильно? Не могли бы вы перечислить все команды, которые нужно по изменять?

Последний раз редактировалось Stilet; 11.04.2015 в 13:43.
MorgunZ вне форума Ответить с цитированием
Старый 11.04.2015, 13:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А не проще ли:
1) спросить у того кто поставил такие требовани, накой черт ему это нужно?
2) Достать компиль, что работает по этому стандарту и скормив ему код посмотреть что получится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.04.2015, 13:47   #5
MorgunZ
Пользователь
 
Регистрация: 12.03.2015
Сообщений: 60
По умолчанию

2)сейчас попробую.. Если не трудно, подскажите какой-то на примере.
1)Таковы условия задания.

Не по теме немного: ansi c != c?
MorgunZ вне форума Ответить с цитированием
Старый 11.04.2015, 13:55   #6
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от MorgunZ Посмотреть сообщение
.

Не по теме немного: ansi c != c?
имеется ввиду, что вы должны использовать "чистый си".
не с++, а именно язык си.



Пример:
Код:
#include <iostream>
это потоки языка с++.

но вы должны использовать сишные потоки, а не потоки с++.
_Bers вне форума Ответить с цитированием
Старый 11.04.2015, 13:57   #7
MorgunZ
Пользователь
 
Регистрация: 12.03.2015
Сообщений: 60
По умолчанию

То есть, если я уберу iostream , по исправляю все ошибки, то это будет чистый с? то есть ansi c?

Это тоже с++ #include <cstdlib> ?

#include <stdio.h> - а вот это уже ansi c?

Последний раз редактировалось Stilet; 11.04.2015 в 14:56.
MorgunZ вне форума Ответить с цитированием
Старый 11.04.2015, 14:57   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
подскажите какой-то на примере.
Та я х.з. Я Дельфиец. Но вроде GCC с этим стандартом работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.04.2015, 14:59   #9
MorgunZ
Пользователь
 
Регистрация: 12.03.2015
Сообщений: 60
По умолчанию

Ну я пока потихоньку пытаюсь переводить. Я так понял что ansi c это просто ЯП C. Убрал инклюды те, поставил инклюды из С. И теперь все возникающие ошибки пытаюсь переводить на c
MorgunZ вне форума Ответить с цитированием
Старый 11.04.2015, 15:04   #10
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Да, в стд библиотеке Си инклудники с .h, без расширения это C++. Не знаю как MSVC, а в gcc стандарт задаётся следующим образом:
gcc 1.c -std=c89 // "ANSI C" или "C89"
gcc 1.c -std=c99
gcc 1.c -std=c11
220Volt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из ANSI в UNICODE Mrshilov Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 06.08.2012 08:55
Перекодировать файл в UTF-8->ANSI, ANSI -> UFT-8 Человек_Борща Общие вопросы Delphi 7 19.05.2011 18:47
Ansi в UTF-8 и наоборот UTF-8 в Ansi Alar Работа с сетью в Delphi 3 09.12.2010 17:02
ANSI C ... eva.t Помощь студентам 11 11.02.2010 23:20
ANSI HunterMan Win Api 2 18.04.2008 23:17