код из Borland перевести для Visual Studio 2005

dummie
Сообщения: 15
Зарегистрирован: 22 июн 2009, 18:04

Доброго времени суток!
Возникла проблема следующего плана: код написанный в борланде не хочет работать в вижуал студио 2005.
Я был бы очень, очень благодарен если бы вы смогли заставить его заработать!
Заранее огромное Спасибо!

А вот собственно и сам код:

Код: Выделить всё

#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
//------------------------
void avarage_before_neg(int *mas, int el)
//в функцию передается массив mas и количество элементов el
{
  int i, neg_pos=-1, count=0;
  float  avarage=0;
  for (i=0; i<el; i++)   //цикл определения позиции первого отрицательного
  if (*(mas+i)<0)
  {
    neg_pos=i;           //запись позиции отрицательного
    break;
  }
  //если отрицательных чисел нет - сообщяем
  if (neg_pos==-1) cout<<"\n"<<"No negative in array";
  //в другом случае подсчитываем количество и сумму
  else
  {
    for (i=0; i<neg_pos; i++)
    {
      avarage+=*(mas+i);
      count++;
    }
    if (count!=0) avarage=avarage/count;
    cout<<"\n"<<"Avarage value of elements before first negative = "<<avarage;
    cout<<"\n"<<"Element count before first negative = "<<count;
  }
}

void left_min (int *mas, int el)
//в функцию передается массив mas и количество элементов el
{
  int i, min=1000, mpos=-1;
  float sum_min=0, prod_min=1, ratio=0;
  //цикл для нахождения позиции минимального элемента
  for(i=0; i<el; i++)
  if (*(mas+i)<min)
  {
    min=*(mas+i);
    mpos=i;
  }
  //цикл для подсчета суммы и произведения
  for(i=0; i<mpos; i++)
  {
    sum_min+=*(mas+i);
    prod_min*=*(mas+i);
  }
  //если произведение равно 0 перехватываем ошибку
  if (prod_min==0) cout<<"Devision by zero";
  //в другом случае выводим результат на экран
  else
  {
    ratio=sum_min/prod_min;
    cout<<"\n"<<"Ratio between summ and product before minimum element = "<<ratio;
  }
}

void print_mas (int *mas, int el)
//в функцию передается массив mas и количество элементов el
{
  int i;
  for (i=0; i<el; i++)
  {
    cout<<*(mas+i)<<"\t";
  }
}

void sign_mas(int *mas, int el, int *mas2, int *el2)
//в функцию передается массивы mas и mas2
// и количество элементов в первом массиве el и во втором - el2
{
  int i, element=0;
  float sign=0;
  //цикл для обнуления второго массива
  for (i=0; i<el; i++)
  *(mas2+i)=0;
  sign=*(mas+0);
  if (sign==0) sign=1;
  //цикл для создания второго массива
  for (i=0; i<el; i++)
  {
    //если знаки одинаковы то суммируем
    if (*(mas+i)/sign>=0) *(mas2+element)+=*(mas+i);
    //в другом случае создаем новый элемент во втором массиве
    else if (*(mas+i)/sign<0)
    {
      element++;
      sign=*(mas+i);
      if (sign==0) sign=1;
      *(mas2+element)+=*(mas+i);
    }
  }
  *el2=element+1;
}

void main()
{
  int el, el2, i, comand;
  cout<<"Type array size =";
  cin>>el;
  int* mas = new int[el];         //создание двух динамических массивов
  int* mas2 = new int[el];
  randomize();
  for (i=0; i<el; i++)
  mas[i]=random(10)-5;
  do
  {
  clrscr();
  cout<<"Choose comand:";
  cout<<"\n"<<"1. Change array size";
  cout<<"\n"<<"2. Find avarege and count before first negative";
  cout<<"\n"<<"3. Find ratio between summ and product of elements before first negative";
  cout<<"\n"<<"4. Crate massive with near elements with same sign";
  cout<<"\n"<<"5. Exit"<<"\n";
  cin>>comand;
  switch (comand)
  {
    case 1:             //первый пункт меню
    {
      clrscr();
      delete[] mas;
      delete[] mas2;
      cout<<"Type array size =";
      cin>>el;
      int* mas = new int[el];
      int* mas2 = new int[el];
      randomize();
      for (i=0; i<el; i++)
      mas[i]=random(10)-5;
      break;
    }
    case 2:              //второй пункт меню
    {
      clrscr();
      cout<<"Array:"<<"\n";
      print_mas(mas, el);
      avarage_before_neg(mas, el);
      getch();
      break;
    }
    case 3:              //третий пункт меню
    {
      clrscr();
      cout<<"Array:"<<"\n";
      print_mas(mas, el);
      left_min(mas, el);
      getch();
      break;
    }
    case 4:                //пчетвертый пункт меню
    {
      clrscr();
      cout<<"Array:"<<"\n";
      print_mas(mas, el);
      sign_mas(mas, el, mas2, &el2);
      cout<<"\nCreated array:"<<"\n";
      print_mas(mas2, el2);
      getch();
      break;
    }
    case 5:                  //выход
    {
      delete[] mas;
      delete[] mas2;
      exit(0);
    }
    default:
    {
      cout<<"\n"<<"No such comand";
      getch();
      break;
    }
  }
  }
  while(comand!=5);
}
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Перемещено их раздела "С и С++".
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
dummie
Сообщения: 15
Зарегистрирован: 22 июн 2009, 18:04

Romeo писал(а):Перемещено их раздела "С и С++".
Это значит, что мне нужно создавать тему по новой?
Всё разобрался куда её переместили
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Почему, наоборот больше шансов, что здесь ответят. Моя задача не навредить, а помочь.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
dummie
Сообщения: 15
Зарегистрирован: 22 июн 2009, 18:04

Неужели никто не поможет?
Хотя бы расскажите пожалуйсто что поменять, что бы заработало.
А я уже со своими скуднейшими знаниями попробую. :(
Аватара пользователя
Airhand
Сообщения: 239
Зарегистрирован: 06 окт 2005, 16:21
Откуда: Dnepropetrovsk

Что конретно не работает ?
1. Код не должен содержать обращения к визуальным компонентам борлонда - тут вроде нет.
2. Нужно создавать новое приложение/проект в студии.
3. Нужно подключить некоторые хидеры и/или библиотеки.
А что говорит студия ?
Надо завершать прогу не exit(0), а return 0.
Оптимизация по скорости:
#define while if
Оптимизация по размеру:
#define struct union
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

&quot писал(а):а return 0.
В данному случае просто return; :)
dummie, говорю как студия ругается, будем разбирать.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
dummie
Сообщения: 15
Зарегистрирован: 22 июн 2009, 18:04

вот ошибки.
Спасибо всем кто отозвался.

http://rapidshare.com/files/247668712/oshibki.JPG.html
Аватара пользователя
Airhand
Сообщения: 239
Зарегистрирован: 06 окт 2005, 16:21
Откуда: Dnepropetrovsk

Romeo писал(а):В данному случае просто return; :)
Ага у прототипа int main(какие-то параметры).
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Надо посмотреть в каких хидерах описаны функции, на которые ругается, и подключить их.
clrscr() точно в студии нет, я не помню как называется альтернатива.
Надо подключить хидеры и ошибок станет меньше.
Оптимизация по скорости:
#define while if
Оптимизация по размеру:
#define struct union
dummie
Сообщения: 15
Зарегистрирован: 22 июн 2009, 18:04

Да если бы я еще знал Как :) было бы великолепно, но я не знаю :(
Ответить