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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2012, 14:58   #1
Каtерина
 
Аватар для Каtерина
 
Регистрация: 11.01.2012
Сообщений: 5
Вопрос Перевод программы Pascal на С++

Помогите перевести программу с Pascal на язык С++
Код:
uses crt;
const n=10;
var i,j,max:integer;
    sum,a,b,temp:real;
    x:array[1..n] of real;
    
begin
clrscr;
for i:=1 to n do
 begin
  x[i]:=random(40)-(random(1000)/(random(10)+1));
  write(x[i]:7:1);
 end;
writeln;
readln(a,b);
max:=0;
for i:=1 to n do
 if (x[i]>=a) and (x[i]<=b) then inc(max);
writeln('Всего ',max, ' элементов');
sum:=0;max:=1;
for i:=2 to n do
 begin
 if x[i]>x[max] then begin
                   max:=i;
                   sum:=0;
                  end
    else sum:=sum+x[i];
 end;
 
writeln('Сумма после макс:',sum:7:1);
for i:=2 to n do
 for j:=n downto i do
  if abs(x[j-1])>abs(x[j]) then begin
    temp:=x[j];
    x[j]:=x[j-1];
    x[j-1]:=temp;
   end;
for i:=1 to n do
 write(x[i]:7:1);
 readln;
end.
Сама программа выполняет следующее:
1) В одномерном массиве, состоящем из N вещественных элементов, вычисляет:
1) количество элементов массива, лежащих в диапазоне от А до В (значения А и В вво-
дятся с клавиатуры;
2) сумму элементов массива, расположенных после максимального элемента.
Упорядочивает элементы массива по убыванию модулей элементов.
Каtерина вне форума Ответить с цитированием
Старый 01.02.2012, 21:27   #2
Каtерина
 
Аватар для Каtерина
 
Регистрация: 11.01.2012
Сообщений: 5
По умолчанию

Вот код на С++
Помогите исправить ошибки, а то даже и не запускается
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream.h>


static void Main(string[] args)
        {
             int[] array = { 1, -2, 3, 0, -4, 5, 23, -1, 3, 15 };
            int a = -3; //начало интервала
            int b = 10; //конец интервала
            int count = 0; //счетчик, первоначально 0
            int max = -100; //переменная для хранения максимального элемента массива
            int sum = 0;   //переменная для хранения суммы элементов после максимального
            int num = 0;       //номер элемента массива с максимальным значением
            int length = array.Length; //длина массива
 
 
            for (int i = 0; i < length; i++)
            {
                Console.WriteLine(array[i]);       //Вывод массива на консоль
                if (array[i] >= a && array[i] <= b)//если i-элемент массива принадлежит интервалу [a,b] 
                    count++;                       //прибавляем 1 к значению счетчика
                
            }
            Console.WriteLine("количество элементов массива, лежащих в интервале ["+ a + ","+ b + "] = " + count);   
            for (int i = 0; i < length; i++)
            {
                if (max < array[i])
                {
                    max = array[i]; //Максимальное значение
                    num = i + 1;    //Номер элемента массива с максимальным значением
                }
            }
            for (int j = num; j < length; j++)
            {
                
                    sum += array[j]; //Сумма элементов после максимального
            }
            Console.WriteLine("Максимальное значение ={0}, Сумма элементов после максимального = {1} ", max, sum);
            Console.ReadKey();

			//упорядочить элементы массива по убыванию модулей элементов
            for (int i = array.Length - 1; i > 0; i--)     
                for (int j = 0; j < i; j++)
                    if (Math.Abs(array[j]) > Math.Abs(array[j + 1]))//вычисляем модули элементов массива
                    {                                                //и сортируем пузырьковым методом
                        int tmp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = tmp;
                    }
            //т.к. мы отсортировали элементы по возрастанию меняем порядок элементов на обратный
            Array.Reverse(array);    
            //выводим окончательный массив на консоль                                    
            Console.WriteLine("Массив, упорядоченный по убыванию модулей элементов"); 
            for (int i = 0; i < length; i++)                        
            {
                Console.WriteLine(array[i]);                        
            }
            Console.ReadKey();
        }
Каtерина вне форума Ответить с цитированием
Старый 01.02.2012, 22:13   #3
JuniorProger
Форумчанин
 
Регистрация: 16.09.2011
Сообщений: 114
По умолчанию

Вот подправил чтобы запускалось. В задачу не вникал.
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
  int array [] = { 1, -2, 3, 0, -4, 5, 23, -1, 3, 15 };
  int a = -3; //начало интервала
  int b = 10; //конец интервала
  int count = 0; //счетчик, первоначально 0
  int max = -100; //переменная для хранения максимального элемента массива
  int sum = 0;   //переменная для хранения суммы элементов после максимального
  int num = 0;       //номер элемента массива с максимальным значением
  int length = sizeof(array)/sizeof(array[0]); //длина массива
 
 
  for (int i = 0; i < length; i++)
  {
      cout<<array[i];       //Вывод массива на консоль
      if (array[i] >= a && array[i] <= b)//если i-элемент массива принадлежит интервалу [a,b] 
          count++;             //прибавляем 1 к значению счетчика
      
  }
  cout<<"количество элементов массива, лежащих в интервале ["<<a<<","<<b<<"] = "<<count;   
  for (int i = 0; i < length; i++)
  {
      if (max < array[i])
      {
          max = array[i]; //Максимальное значение
          num = i + 1;    //Номер элемента массива с максимальным значением
      }
  }
  for (int j = num; j < length; j++)
  {
      
          sum += array[j]; //Сумма элементов после максимального
  }
  cout<<"Максимальное значение ={0}, Сумма элементов после максимального = {1} "<<max<<" "<<sum;
  cin.get();

			//упорядочить элементы массива по убыванию модулей элементов
  for (int i = length - 1; i > 0; i--)     
      for (int j = 0; j < i; j++)
          if (abs(array[j]) > abs(array[j + 1]))//вычисляем модули элементов массива
          {        //и сортируем пузырьковым методом
    int tmp = array[j];
    array[j] = array[j + 1];
    array[j + 1] = tmp;
          }
  //т.к. мы отсортировали элементы по возрастанию меняем порядок элементов на обратный
  Array.Reverse(array);    
  //выводим окончательный массив на консоль      
  cout<<"Массив, упорядоченный по убыванию модулей элементов"; 
  for (int i = 0; i < length; i++)    
  {
      cout<<array[i]<<" ";    
  }
  cin.get();

  return 0;
}
Красным то, что я не поменял т.к. не вижу смысла в этом действии. Проще сразу упорядочить по убыванию. Зачем лишние непонятные действия?
JuniorProger вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод программы с pascal на accемблер munthrekosh Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 12.11.2011 16:25
перевод программы с Pascal на Java christa Помощь студентам 1 23.09.2011 19:53
Перевод программы с Pascal в C++ !!! !! ProgFrog Помощь студентам 0 09.04.2011 14:21
Перевод программы с Pascal в C++ GoodSpirit Помощь студентам 4 19.05.2010 18:04