Сионист » 04 апр 2017, 06:14
Во-первых что такое оператоды? А во-вторых c не нуждается в типе массива. Паскаль имеет свои особенности, там массив в подпрограмму передаётся именно как массив, что требует описания типа и в некоторых реализациях из-за ошибки нельзя передать массив в параметр, если тип этого параметра не совпадает с массива, даже
Код: Выделить всё
program p;
type ta1=array[1..10]of real;
ta2=array[1..10]of real;
var x:ta1;
i:integer;
function s(a:ta2):real;
var i:ineger;
r:real;
begin
r:=0;
for i:=1 to 100 do
begin
r:=r+a[i]/100;
end;
s:=r;
end;
begin
for i:=1 to 100 do
begin
readln(x[i]);
end;
writeln(s(x));
end.
с точки зрения некоторых компиляторов содержит синтаксическую ошибку, заключающуюся в том что типы фактического и формального параметров не совпадают. А совпадают типы, или объявленные синонимичными (type <имя типа>=<имя типа>), или если точно совпадает имя типа обеих величин. В том числе совпадают два синонима одного типа. А фактическое совпадение описания значения не имеет. Мой преподаватель встречалась с таким чудом, компилятор не назвала. Так и то есть реализации, где можно прямо в списке параметров описать тип формального параметра как тип массива и ошибки не будет. На c же массив передаётся по указателю на оригинал, что с формальными статическими проверками типов самих массивов согласуется плохо, в отличие от статических проверок базовых типов (типов элементов). То есть хоть типизация на c/c++ строже, чем на паскале, зато на паскале фанатичнее и от этого пострадали в первую очередь именно массивы. Кроме того, на паскале можно присвоить сразу целиком массив другому массиву, что также требует, чтоб у массива был настоящий тип, а на c/c++ этого сделать нельзя. Хотя typedef может определять типы массивов. Но это не нужно. Да и тип будет не полноценен: передача по указателю на оригинал + невозможность присвоить целиком массив другому массиву за одно применение оператора присваивания.
_Mikhail_ писал(а):Подскажите пожалуйста в способах осуществления данной операции на С++, или как правильно оформить запрос в гугл по этой теме. Прошу не гнать в шею а получше объяснить т.к. только учусь и во всем приходится самому разбираться.
По теме видно, что ещё не разобрался. Но может что хорошее и выйдет, Вирт со Страуструпом когда то тоже начинали. И знали ещё меньше.
Во-первых что такое оператоды? А во-вторых c не нуждается в типе массива. Паскаль имеет свои особенности, там массив в подпрограмму передаётся именно как массив, что требует описания типа и в некоторых реализациях из-за ошибки нельзя передать массив в параметр, если тип этого параметра не совпадает с массива, даже
[code]program p;
type ta1=array[1..10]of real;
ta2=array[1..10]of real;
var x:ta1;
i:integer;
function s(a:ta2):real;
var i:ineger;
r:real;
begin
r:=0;
for i:=1 to 100 do
begin
r:=r+a[i]/100;
end;
s:=r;
end;
begin
for i:=1 to 100 do
begin
readln(x[i]);
end;
writeln(s(x));
end.[/code] с точки зрения некоторых компиляторов содержит синтаксическую ошибку, заключающуюся в том что типы фактического и формального параметров не совпадают. А совпадают типы, или объявленные синонимичными (type <имя типа>=<имя типа>), или если точно совпадает имя типа обеих величин. В том числе совпадают два синонима одного типа. А фактическое совпадение описания значения не имеет. Мой преподаватель встречалась с таким чудом, компилятор не назвала. Так и то есть реализации, где можно прямо в списке параметров описать тип формального параметра как тип массива и ошибки не будет. На c же массив передаётся по указателю на оригинал, что с формальными статическими проверками типов самих массивов согласуется плохо, в отличие от статических проверок базовых типов (типов элементов). То есть хоть типизация на c/c++ строже, чем на паскале, зато на паскале фанатичнее и от этого пострадали в первую очередь именно массивы. Кроме того, на паскале можно присвоить сразу целиком массив другому массиву, что также требует, чтоб у массива был настоящий тип, а на c/c++ этого сделать нельзя. Хотя typedef может определять типы массивов. Но это не нужно. Да и тип будет не полноценен: передача по указателю на оригинал + невозможность присвоить целиком массив другому массиву за одно применение оператора присваивания.
[quote="_Mikhail_"]Подскажите пожалуйста в способах осуществления данной операции на С++, или как правильно оформить запрос в гугл по этой теме. Прошу не гнать в шею а получше объяснить т.к. только учусь и во всем приходится самому разбираться.[/quote]По теме видно, что ещё не разобрался. Но может что хорошее и выйдет, Вирт со Страуструпом когда то тоже начинали. И знали ещё меньше.