Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2011, 09:09   #1
Zevsnet
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 10
По умолчанию Из Pascala -> C++

Ребята помогите пожалуйста перевести программу из Паскаля в С++!

1) Дана целочисленная матрица размера M x N. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего максимальное количество одинаковых элементов


Код:
const
     N=10;
type
    massiv = array [1..N] of integer;

procedure DeleteOneFromMassiv(var mass:massiv; size: integer;index : integer);
var i :integer;
begin
     dec(index);
     for i:=index to size-1 do
     begin
          mass[i]:=mass[i+1];
     end;
     dec(size);
end;

procedure DeleteManyFromMassiv(var mass :massiv; size: integer; del : integer);
var i : integer;
begin
     i:=0;
     while i<=size-1 do
     begin
          if mass[i]=del then
          begin
               DeleteOneFromMassiv(mass,size,i+1);
               dec(i);
          end;
          inc(i);
     end;
end;

var TArr : massiv;
    choice, i, j, SizeOfMass, count : integer;
	
begin
{---------------------------------------------------------------}
     Randomize;
     SizeOfMass:=N;
     Write('Random array:');
     for i:=1 to N do
     begin
          TArr[i] := random(N);
          Write(TArr[i]:2);
     end;
{---------------------------------------------------------------}
     WriteLn;
     WriteLn;
     WriteLn('Enter Choice:');
     WriteLn('1 - удалить из массива все элементы встречающиеся менее двух раз;');
     WriteLn('2 - удалить из массива все элементы встречающиеся более двух раз;');
     WriteLn('3 - удалить из массива все элементы встречающиеся ровно два раза;');
     WriteLn('4 - удалить из массива все элементы встречающиеся ровно три раза.');
     WriteLn;
{---------------------------------------------------------------}
     Write('Your choice: ');
     ReadLn(choice);
     i:=1;
     case choice of
	 
     1:while i<=SizeOfMass do
       begin
            count:=1;
            for j:=1 to SizeOfMass do
            if (i<>j)and(TArr[i]=TArr[j]) then inc(count);
            if count<2 then
            begin
                 DeleteOneFromMassiv(TArr,SizeOfMass,i);
                 dec(i);
            end;
            inc(i);
       end;
	   
     2:while i<=SizeOfMass do
       begin
            count:=1;
            for j:=1 to SizeOfMass do
            if (i<>j)and(TArr[i]=TArr[j]) then inc(count);
            if count>2 then
            begin
                 DeleteManyFromMassiv(TArr,SizeOfMass,TArr[i]);
                 dec(i);
            end;
            inc(i);
       end;
	   
     3:while i<=SizeOfMass do
       begin
            count:=1;
            for j:=1 to SizeOfMass do
            if (i<>j)and(TArr[i]=TArr[j]) then inc(count);
            if count=2 then 
            begin
                 DeleteManyFromMassiv(TArr,SizeOfMass,TArr[i]);
                 dec(i);
            end;
            inc(i);
       end;
	   
     4:while i<=SizeOfMass do
       begin
            count:=1;
            for j:=1 to SizeOfMass do
            if (i<>j)and(TArr[i]=TArr[j]) then inc(count);
            if count=3 then 
            begin
                 DeleteManyFromMassiv(TArr,SizeOfMass,TArr[i]);
                 dec(i);
            end;
            inc(i);
       end;
     else WriteLn('Error.Wrong choice.');
     end;
{---------------------------------------------------------------}
     WriteLn;
     WriteLn('Result:');
     for i:=1 to SizeOfMass do
     begin
          Write(TArr[i]);
          if i<SizeOfMass then Write(',');
     end;
     WriteLn;
     WriteLn;
     WriteLn('Press "Enter" to exit.');
     readln;
end.
Zevsnet вне форума Ответить с цитированием
Старый 10.01.2011, 08:41   #2
Zevsnet
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 10
По умолчанию

И в очередной раз, я разочарован в вашем форуме!
Zevsnet вне форума Ответить с цитированием
Старый 10.01.2011, 08:46   #3
Donatello
Форумчанин
 
Аватар для Donatello
 
Регистрация: 22.12.2010
Сообщений: 109
По умолчанию

А что разочаровываться, тут только помогают а не делают, делают вам во фрилансе за денежки, а тут кладите то что наваяли сами и вам помогут исправить ошибки никак иначе.
Я бы изменил мир, но бог не дает исходников (c)

И сказал мыслитель, напиши свою проблему на бумаге и ты увидишь свои ошибки.
Donatello вне форума Ответить с цитированием
Старый 10.01.2011, 08:48   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а почему кто-то должен делать за вас?
не забывайте что перво-очередная цель форума в советах и обмене опытом, а не в том чтоб за студентов делать их задания.
люди работают/учаться.

да и мне лично кажется что код не верный(функция DeleteOneFromMassiv)
а если он не верен, то и зачем я буду на него время тратить?(потом вы считая начальный код верным будете меня погонять нехорошим словом)

посмотрел ваши прошлые темы, наработок нет ни в одной(ладно в одной подобие на наработки есть, но читать то невозможно нормально)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 10.01.2011 в 08:54.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц