Аналогичные оператоды и методы Pascal в C++

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Аналогичные оператоды и методы Pascal в C++

Сионист » 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_ писал(а):Подскажите пожалуйста в способах осуществления данной операции на С++, или как правильно оформить запрос в гугл по этой теме. Прошу не гнать в шею а получше объяснить т.к. только учусь и во всем приходится самому разбираться.
По теме видно, что ещё не разобрался. Но может что хорошее и выйдет, Вирт со Страуструпом когда то тоже начинали. И знали ещё меньше.

Re: Аналогичные оператоды и методы Pascal в C++

Romeo » 09 янв 2017, 18:22

Почему не подходит typedef?

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

typedef int type[300];
type Komp1, Komp2, Gn;

Аналогичные оператоды и методы Pascal в C++

_Mikhail_ » 09 янв 2017, 18:16

Здравствуйте!
Необходимо провести в на С++ такаю же операцию как в Паскале

type

2type=Array [1...100] of integer; //Ну тут объявляется тип данных массив от размером 100 как подобное делается в С я не знаю да и не уверен что способен правильно сформулировать запрос в гугл.

var

Komp1,Komp2,Gn: Type2;//(если я правильно понял то объявленные переменные будут типа массив, а вот как сделать так же на с++ я не знаю, после гугления нашел всякие typedef и ему подобные, но это не подходит.

Подскажите пожалуйста в способах осуществления данной операции на С++, или как правильно оформить запрос в гугл по этой теме. Прошу не гнать в шею а получше объяснить т.к. только учусь и во всем приходится самому разбираться.

Вернуться к началу