Здравствуйте!
Необходимо провести в на С++ такаю же операцию как в Паскале
type
2type=Array [1...100] of integer; //Ну тут объявляется тип данных массив от размером 100 как подобное делается в С я не знаю да и не уверен что способен правильно сформулировать запрос в гугл.
var
Komp1,Komp2,Gn: Type2;//(если я правильно понял то объявленные переменные будут типа массив, а вот как сделать так же на с++ я не знаю, после гугления нашел всякие typedef и ему подобные, но это не подходит.
Подскажите пожалуйста в способах осуществления данной операции на С++, или как правильно оформить запрос в гугл по этой теме. Прошу не гнать в шею а получше объяснить т.к. только учусь и во всем приходится самому разбираться.
Аналогичные оператоды и методы Pascal в C++
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Почему не подходит typedef?
Код: Выделить всё
typedef int type[300];
type Komp1, Komp2, Gn;
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Во-первых что такое оператоды? А во-вторых c не нуждается в типе массива. Паскаль имеет свои особенности, там массив в подпрограмму передаётся именно как массив, что требует описания типа и в некоторых реализациях из-за ошибки нельзя передать массив в параметр, если тип этого параметра не совпадает с массива, даже
с точки зрения некоторых компиляторов содержит синтаксическую ошибку, заключающуюся в том что типы фактического и формального параметров не совпадают. А совпадают типы, или объявленные синонимичными (type <имя типа>=<имя типа>), или если точно совпадает имя типа обеих величин. В том числе совпадают два синонима одного типа. А фактическое совпадение описания значения не имеет. Мой преподаватель встречалась с таким чудом, компилятор не назвала. Так и то есть реализации, где можно прямо в списке параметров описать тип формального параметра как тип массива и ошибки не будет. На c же массив передаётся по указателю на оригинал, что с формальными статическими проверками типов самих массивов согласуется плохо, в отличие от статических проверок базовых типов (типов элементов). То есть хоть типизация на c/c++ строже, чем на паскале, зато на паскале фанатичнее и от этого пострадали в первую очередь именно массивы. Кроме того, на паскале можно присвоить сразу целиком массив другому массиву, что также требует, чтоб у массива был настоящий тип, а на c/c++ этого сделать нельзя. Хотя typedef может определять типы массивов. Но это не нужно. Да и тип будет не полноценен: передача по указателю на оригинал + невозможность присвоить целиком массив другому массиву за одно применение оператора присваивания.
Код: Выделить всё
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.
По теме видно, что ещё не разобрался. Но может что хорошее и выйдет, Вирт со Страуструпом когда то тоже начинали. И знали ещё меньше._Mikhail_ писал(а):Подскажите пожалуйста в способах осуществления данной операции на С++, или как правильно оформить запрос в гугл по этой теме. Прошу не гнать в шею а получше объяснить т.к. только учусь и во всем приходится самому разбираться.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.