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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Decart
1 / 1 / 1
Регистрация: 19.12.2011
Сообщений: 19
#1

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

19.12.2011, 21:03. Просмотров 275. Ответов 3
Метки нет (Все метки)

Написал задачу на Паскале. Нужно перевести ее для 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2011, 21:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Pascal to C++, задача с функцией (C++):

задача с функцией - C++
Здравствуйте, я студент, нам задали данную лабу, но в С я полный 0, помогите с решением пожалуйста. прилагаю саму задачу по ссылке, т.к...

Задача с файлом и функцией - C++
Мне была задана такая задача: Для хранения данных о ноутбуках описать структуру вида (при необходимости дополнив ее): struct NOTEBOOK {...

C++ Функции , Варианты написания программы , Задача с функцией - C++
Задача на С++ : Функция , которая вводит с клавиатуры последовательность целых чисел и после ввода последнего числа выводит на печать в...

Двумерная задача теплопроводности, перевод кода с Pascal на C++ - C++
Добрый день. По учебе, понадобилось первести код для решения двумерной задачи теплопроводности с Pascal на C++. Вот руководство ...

Задача с функцией - C#
не знаю в чем проблема неправильно считает System; using System.Collections.Generic; using System.ComponentModel; using...

Задача с функцией - Delphi
Здравствуйте, не могу найти ошибку в задачи: Составить функцию: Составить функцию, вычисляющую максимальный и минимальный элементы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
HighPredator
5534 / 1848 / 345
Регистрация: 10.12.2010
Сообщений: 5,455
Записей в блоге: 2
19.12.2011, 21:16 #2
Дык оно работает или нет?
0
Decart
1 / 1 / 1
Регистрация: 19.12.2011
Сообщений: 19
19.12.2011, 21:56  [ТС] #3
В паскале работает нормально.в СИ++ не работает. проблема,думаю,в том,чтобы присвоить переменным v1,v2,v3,vmx,vmn,vs новый тип ms,который описан как массив.
0
Decart
1 / 1 / 1
Регистрация: 19.12.2011
Сообщений: 19
21.12.2011, 00:17  [ТС] #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();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2011, 00:17
Привет! Вот еще темы с ответами:

Задача с функцией For - VBA
Вычислить сумму первых n членов ряда:http://gd-t.ru/img/2016-05/26/zrq4if2sqa47umas1qmnc1gdq.png

Задача с функцией - Pascal
Написать прогу сложения двух чисел с использованием функции Sum

Задача с функцией IF - MS Excel
Всем привет, столкнулся с тем, что при использовании функции &quot;если&quot; с несколькими условиями значения не подтягиваются. необходимо...

Задача с функцией Delphi - Delphi
Делал программки по делфи и наткнулся на такое заданьице. Кто знает как сделать эту прогу ? Ну или хотябы формулы для высчитывания этой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.12.2011, 00:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru