Форум программистов, компьютерный форум CyberForum.ru

Pascal to C++, задача с функцией - C++

Восстановить пароль Регистрация
 
Decart
1 / 1 / 1
Регистрация: 19.12.2011
Сообщений: 19
19.12.2011, 21:03     Pascal to C++, задача с функцией #1
Написал задачу на Паскале. Нужно перевести ее для C++,а у меня что-то не выходит с синтаксисом.

Условие:Заданы одномерные массивы(вектора) целых чисел со знаком: v1(m), v2(n), v3(k).
Функция: длина вектора. Из векторов v1,v2,v3 одинаковой размерности,построить вектор, как сумму векторов, которые имеют наибольшую и наименьшую длину (если таких векторов несколько,взять в каждом случае тот вектор, который имеет наименьший номер). Вывести длину каждого вектора,отобранные вектора,вывести построенный вектор.

Паскаль:
Pascal
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
43
44
45
46
47
48
49
50
51
52
53
Program vector;
Const m=5;n=5;k=5;
Type ms=array[1..k] of integer; {объявляем по максимальному числу}
 
Var v1,v2,v3,vmx,vmn,vs:ms; {vmx -вектор мах длины, vmn-минимальной)}
i:byte; dl1,dl2,dl3:real;
 
 
function modv(a:ms;kol:integer):real; { в массив а передадим конкретный v и кол-во элементов в нем}
var j:byte;S:integer;
begin
s:=0;
for j:=1 to kol do
S:=s+sqr(a[j]);
modv:=sqrt(s);
end;
begin
for i:=1 to m do begin
Write('v1[',i,']');readln(v1[i]); end;
dl1:=modv(v1,m);
 
for i:=1 to n do begin
Write('v2[',i,']');readln(v2[i]); end;
dl2:=modv(v2,n);
for i:=1 to k do begin
Write('v3[',i,']');readln(v3[i]); end;
dl3:=modv(v3,k);
 
if (k=m)and (k=n) then begin {для одноmерных }
if (dl1dl2) and(dl2dl3) and (dl3dl1) then begin { если среди длин нет}
if (dl1dl2) and (dl1dl3) then vmx:=v1 else { одинаковых то запоминаем векторы с наименьшей}
if (dl2dl1) and (dl2dl3)then vmx:=v2 else vmx:=v3; { и наиболшей длиной }
if (dl1dl2) and (dl1dl3) then vmn:=v1 else
if (dl2dl1) and (dl2dl3)then vmn:=v2 else vmn:=v3; end
else begin
if(dl1=dl2) and (dl1dl3) then vmn:=v1; {при совпадении двух выбираем вектор с наименьшим номером}
if(dl2=dl3) and (dl2dl1) then vmn:=v2;
if(dl1=dl3) and (dl1dl2) then vmn:=v1;
if(dl1=dl2) and (dl1dl3) then vmx:=v1;
if(dl2=dl3) and (dl2dl1) then vmx:=v2;
if(dl1=dl3) and (dl1dl2) then vmx:=v1;
if(dl1=dl2) and (dl1=dl3) then begin vmn:=v1; vmx:=v2;end; {при совпадении трех выбираем первый и второй}
end;
writeln(dl1:0:4,' ',dl2:0:4,' ',dl3:0:4);
for i:=1 to k do Vs[i]:=vmn[i]+vmx[i];
for i:=1 to k do
Write(vmn[i],' '); Writeln;
for i:=1 to k do
Write(vmx[i],' '); writeln;
for i:=1 to k do Write(vs[i],' ');writeln; end else
writeln('ODNOMERNYX NET');
readln;
end.
вот,что на плюсах написал. что здесь изменить нужно?
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <conio.h>
#include <cmath>
#include <stdafx.h>
using namespace std;
//function
 
int modv(int a[i];int kol){
    char j;
    int s;
    s=0;
    for(j=1;j<=kol;j++)
        s=s+pow(a[j],2);
    modv=sqrt(s);
    return modv;
}
 
//osnovnaya programma
int main()
{
    int v1,v2,v3,vmx,vmn,vs;
    char i;
    double dl1,dl2,dl3;
    clrscr();
    for(i=1;i<=m;i++){
        cout<<"v1["<<i<<"]=";
        cin>>v1[i];
    }
        dl1=modv(v1,m);
 
    for(i=1;i<=n;i++){
        cout<<"v2["<<i<<"]=";
        cin>>v2[i];
    }
        dl2=modv(v2,n);
 
    for(i=1;i<=;i++){
        cout<<"v3["<<i<<"]=";
        cin>>v1[i];
    }
        dl3=modv(v3,k);
 
        if((k=m) && (k=n){//dlya odnomernih
            if((dl1!=dl2)&&(dl2!=dl3)&&(dl3!=dl1)) {//esli sredi dlin net ravnih
                if((dl1>dl2)&&(dl1>dl3)) vmx=v1
                    else if((dl2>dl1)&&(dl2>dl3)) vmx=v2 else vmx=v3;
                    if((dl1<dl2)&&(dl1<dl3)) vmn=v1
                    else if((dl2<dl2)&&(dl2<dl3)) vmn=v2 else vmn=v3;
            }
            else {
                if((dl1==dl2)&&(dl1<dl3)) vmn=v1;
                if((dl2==dl3)&&(dl2<dl1)) vmn=v2;
                if((dl1==dl3)&&(dl1<dl2)) vmn=v1;
                if((dl1==dl2)&&(dl1>dl3)) vmx=v1;
                if((dl2==dl3)&&(dl2>dl1)) vmx=v2;
                if((dl1==dl3)&&(dl1>dl2)) vmx=v1;
                if((dl1==dl2)&&(dl1==dl3)){
                    vmn=v1;
                    vmx=v2;
                }
            }
            cout<<dl1<<" "<<dl2<<" "<<dl3;
            for(i=1;i<=k;i++)
                vs[i]=vmn[i]+vmx[i];
            for(i=1;i<=k;i++)
                cout<<vmn[i]<<" ";
            cout<<endl;
            for(i=1;i<=k;i++)
                cout<<vmx[i]<<" ";
            cout<<endl;
            for(i=1;i<=k;i++)
                cout<<vs[i]<<" ";
            cout<<endl;
        }
        else cout<<"odnomernih net";
        cout<<endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2011, 21:03     Pascal to C++, задача с функцией
Посмотрите здесь:

C++ Задача на минимизацию ДНФ, нужен код на С или Pascal!!!
Задача с файлом и функцией C++
C++ Работа с функцией
C++ задача с функцией
Помогите с функцией. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5341 / 1724 / 320
Регистрация: 10.12.2010
Сообщений: 5,107
Записей в блоге: 3
19.12.2011, 21:16     Pascal to C++, задача с функцией #2
Дык оно работает или нет?
Decart
1 / 1 / 1
Регистрация: 19.12.2011
Сообщений: 19
19.12.2011, 21:56  [ТС]     Pascal to C++, задача с функцией #3
В паскале работает нормально.в СИ++ не работает. проблема,думаю,в том,чтобы присвоить переменным v1,v2,v3,vmx,vmn,vs новый тип ms,который описан как массив.
Decart
1 / 1 / 1
Регистрация: 19.12.2011
Сообщений: 19
21.12.2011, 00:17  [ТС]     Pascal to C++, задача с функцией #4
Вот,отредактировал для плюсов.
может кому пригодится
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
#include <conio.h>
#include <math.h>
#define m 5
#define n 5
#define k 5
#include <stdafx.h>
using namespace std;
 
double dl1,dl2,dl3;
int v1[50],v2[50],v3[50],vmx[50],vmn[50],vs[50];
int modv(int *a, int kol){
    char j;
    int s;
    s=0;
    for(j=0;j<kol;j++)
        s=s+pow(*(a+j),2);
    return sqrt(s);
}
 
//osnovnaya programma
int main()
{
    int i;
    clrscr();
    for(i=0;i<m;i++){
        cout<<"v1["<<i<<"]=";
        cin>>v1[i];
    }
        dl1=modv(v1,m);
 
    for(i=0;i<n;i++){
        cout<<"v2["<<i<<"]=";
        cin>>v2[i];
    }
        dl2=modv(v2,n);
 
    for(i=0;i<k;i++){
        cout<<"v3["<<i<<"]=";
        cin>>v3[i];
    }
        dl3=modv(v3,k);
 
        if((k==m)&&(k==n)){//dlya odnomernih
            if((dl1!=dl2)&&(dl2!=dl3)&&(dl3!=dl1)) {//esli sredi dlin net ravnih
                if ((dl1>dl2)&&(dl1>dl3)) for (int g=0;g<n;g++) vmx[g]=v1[g];
                    else if((dl2>dl1)&&(dl2>dl3)) for (int g=0;g<n;g++) vmx[g]=v2[g]; else for (int g=0;g<n;g++) vmx[g]=v3[g];
                    if((dl1<dl2)&&(dl1<dl3)) for (int g=0;g<n;g++) vmn[g]=v1[g];
                    else if((dl2<dl2)&&(dl2<dl3)) for (int g=0;g<n;g++) vmn[g]=v1[g]; else for (int g=0;g<n;g++) vmn[g]=v3[g];
            }
            else {
                if((dl1==dl2)&&(dl1<dl3)) for (int g=0;g<n;g++) vmn[g]=v1[g];
                if((dl2==dl3)&&(dl2<dl1)) for (int g=0;g<n;g++) vmn[g]=v2[g];
                if((dl1==dl3)&&(dl1<dl2)) for (int g=0;g<n;g++) vmn[g]=v1[g];
                if((dl1==dl2)&&(dl1>dl3)) for (int g=0;g<n;g++) vmx[g]=v1[g];
                if((dl2==dl3)&&(dl2>dl1)) for (int g=0;g<n;g++) vmx[g]=v2[g];
                if((dl1==dl3)&&(dl1>dl2)) for (int g=0;g<n;g++) vmx[g]=v1[g];
                if((dl1==dl2)&&(dl1==dl3)){
                    for (int g=0;g<n;g++) vmn[g]=v1[g];
                    for (int g=0;g<n;g++) vmx[g]=v2[g];
                }
            }
            cout<<"dlina 1 vectora="<<dl1<<" "<<"dlina 2 vectora="<<dl2<<" "<<"dlina 3 vectora="<<dl3<<endl;
            for(i=0;i<k;i++)
                vs[i]=vmn[i]+vmx[i];
            cout<<"vector minimalnoi dlini:"<<endl;
            for(i=0;i<k;i++)
                cout<<vmn[i]<<" ";
            cout<<endl;
            cout<<"vector maximalnoi dlini:"<<endl;
            for(i=0;i<k;i++)
                cout<<vmx[i]<<" ";
            cout<<endl;
            for(i=0;i<k;i++)
                cout<<vs[i]<<" ";
            cout<<endl;
        }
        else cout<<"odnomernih net";
        cout<<endl;
cin.get();
cin.get();
}
Yandex
Объявления
21.12.2011, 00:17     Pascal to C++, задача с функцией
Ответ Создать тему
Опции темы

Текущее время: 23:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru