код из Borland перевести для Visual Studio 2005
Добавлено: 22 июн 2009, 18:25
Доброго времени суток!
Возникла проблема следующего плана: код написанный в борланде не хочет работать в вижуал студио 2005.
Я был бы очень, очень благодарен если бы вы смогли заставить его заработать!
Заранее огромное Спасибо!
А вот собственно и сам код:
Возникла проблема следующего плана: код написанный в борланде не хочет работать в вижуал студио 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);
}