Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lev93
1 / 1 / 0
Регистрация: 09.02.2013
Сообщений: 51
#1

Нахождение минимального элемента массива. Перевести с Паскаля на С++ - C++

16.01.2014, 00:08. Просмотров 424. Ответов 7
Метки нет (Все метки)

кто поможет переделать на С++ эту программу?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Program MinElement;
Type Vector=Array [1..100] of integer;
Var   min : integer;
      i,n : byte;
      A : Vector;
{процедуры и функции}
{_____________________}
{Ввод элементов массива}
Procedure InputData;
  begin
    Readln(n);
    For i:=1 to n do
      Read(A[i]);
  end;
{_____________________}
{Находит минимальный элемент}
Procedure MinElem;
  begin
    min:=A[i];
    For i:=n downto 1 do
      If min<0 Then min:=A[i];
  end;
{_______________________}
{основная}
Begin
  Assign(input,'input.txt');Reset(input);
  Assign(output,'output.txt');Rewrite(output);
  InputData;
  MinElem;
  Writeln(min);
  Close(input);
  Close(output);
End.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 00:08     Нахождение минимального элемента массива. Перевести с Паскаля на С++
Посмотрите здесь:

C++ Нахождение максимального элемента матрицы, минимального, суммы, произведения
C++ Рекурсия: нахождение минимального элемента массива
Нахождение минимального элемента массива C++
C++ Нахождение минимального элемента массива
C++ Матрицы в с++.Наведите пожалуйста элементарные примеры с ними (сложение,умножение,нахождение минимального/максимального элемента)
Нахождение минимального элемента в строке матрицы C++
Вычислить произведение P = Хmin*Ymin минимального элемента xmin = min{xi} массива xi и минимального элемента ymin = min{yi} массива yi C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
16.01.2014, 01:56     Нахождение минимального элемента массива. Перевести с Паскаля на С++ #2
мне кажестя что этот код ошибочен, что вы дали
ну как минимум эта строка:
Pascal
1
If min<0 Then min:=A[i];
может что-то не догоняю, но условие min<0 бредово

да и вообще смысл процедуры MinElem не ясен, она видимо ничего не возвращает никуда

вот перевёл всё начало на С++ так как вижу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <vector>
 
size_t n=100;
std::vector<int> A;
 
void InputData()
{
    std::cin>>n;
    int tmp;
    for (size_t i=0;i!=n;++i) {
     std::cin>>tmp;
     A.push_back(tmp); }
}
 
int MinElem()
{
    int min(A[0]);
    for (size_t i=0; i!=n;++i)
        if(min>A[i]) min=A[i];
    return min;
}
за вами остался только main()
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
22477 / 14654 / 4174
Регистрация: 22.10.2011
Сообщений: 25,960
Записей в блоге: 4
16.01.2014, 02:17     Нахождение минимального элемента массива. Перевести с Паскаля на С++ #3
Цитата Сообщение от abit Посмотреть сообщение
да и вообще смысл процедуры MinElem не ясен, она видимо ничего не возвращает никуда
Процедура вообще никогда ничего никуда не возвращает. Зато MinElem изменяет глобальную переменную Min...
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
16.01.2014, 02:40     Нахождение минимального элемента массива. Перевести с Паскаля на С++ #4
Цитата Сообщение от UI Посмотреть сообщение
Процедура вообще никогда ничего никуда не возвращает. Зато MinElem изменяет глобальную переменную Min...
есть мнение что глобальные переменные тут не нужны, это моветон

таким стилем я уже наблюдал как хранят всякие переменные циклов i,j,k глобальными, сейчас минимальный элемент хранят глобальным, завтра что, будем хранить глобальными tmp-переменную в обмене элементов массива, а послезавтра будем содержимое регистров eax хранить глобально? нет, уж увольте, пройдите тему "область видимости переменных" прежде чем браться за программирование
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
22477 / 14654 / 4174
Регистрация: 22.10.2011
Сообщений: 25,960
Записей в блоге: 4
16.01.2014, 02:51     Нахождение минимального элемента массива. Перевести с Паскаля на С++ #5
Цитата Сообщение от abit Посмотреть сообщение
есть мнение что глобальные переменные тут не нужны, это моветон
Это в теме не обсуждается. Насчет "моветон это или нет" - в Холивары. Для совсем начинающего - никакого особого криминала не вижу. Никто "экспертом" не родился.
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
16.01.2014, 02:56     Нахождение минимального элемента массива. Перевести с Паскаля на С++ #6
Цитата Сообщение от UI Посмотреть сообщение
Это в теме не обсуждается. Насчет "моветон это или нет" - в Холивары. Для совсем начинающего - никакого особого криминала не вижу. Никто "экспертом" не родился.
как это нет криминала? Вы в курсе что такое мультипоточность? как вы думаете поведёт себя подобный код, где два процесса будет одновременно искать в разных массивах минимальный элемент который хранится в глобальной переменной?
MrGluck
Ворчун
Эксперт CЭксперт С++
6414 / 3612 / 448
Регистрация: 29.11.2010
Сообщений: 9,531
16.01.2014, 03:14     Нахождение минимального элемента массива. Перевести с Паскаля на С++ #7
Цитата Сообщение от UI Посмотреть сообщение
Для совсем начинающего - никакого особого криминала не вижу.
Легче научиться, чем переучиться. Такое надо с самого начала прививать чтобы потом не тратить кучу времени на выявление ошибок ввиду отсутствия логики нормального построения программы. Считаю, что замечание уместно.

Вот пример: считывает 10 чисел с файла и выводит минимальное в результирующий файл. Сделано с перенаправлением потоков.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <fstream>
#include <iostream>
 
void input(int *a, const int size)
{
    for (int i=0; i < size; i++)
        std::cin >> a[i];
}
 
int min_element(const int *a, const int size)
{
    int min = a[0];
    for (int i=1; i < size; i++)
        if (a[i] < min)
            min = a[i];
    return min;
}
 
int main()
{
    std::ifstream ifs("input.txt");
    std::ofstream ofs("output.txt");
    std::cin.rdbuf(ifs.rdbuf());
    std::cout.rdbuf(ofs.rdbuf());
 
    const int size = 10;
    int arr[size];
    input(arr, size);
    std::cout << "Min element: " << min_element(arr, size);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2014, 03:18     Нахождение минимального элемента массива. Перевести с Паскаля на С++
Еще ссылки по теме:

C++ Нахождение минимального элемента в стеке
C++ Матрицы,нахождение максимального и минимального элемента
Перевести из паскаля нахождение строк с наибольшим количеством нулей C++
Нахождение максимального и минимального элемента в списке C++
Найти сумму первого максимального элемента массива А и последнего минимального элемента массива В C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
16.01.2014, 03:18     Нахождение минимального элемента массива. Перевести с Паскаля на С++ #8
если мы говорим о начинающем в Си, Бейсике, Дельфи - один разговор, но если речь идёт о C++, fpc, haskell, python - то область видимости нужно понимать прежде чем браться за язык, это далеко не сложная тема, засорять глобальное пространство имён можно разве что на hello world, а всякие using namespace использовать очень редко внутри чего-то а не глобально, ибо мой опыт уже подсказывает что переучить Сишника в C++ очень сложно... он постоянно лепет всякую фигню, вот вам пример совсем недавнего кода, встретил два дня назад у одного из своих студентов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Согласно ТЗ этот код должен заменить табуляцию на пробелы по всей строке, 
// убрать ведущие и конечные пробелы в строке, а также
// раскрыть кавычки, если в них заключена строковая константа.
string Config::trim(string &src){
 
    char * ptr=(char *)src.c_str();
    char * dst;
 
    for(int i=0;i<strlen(ptr);i++){
        if(ptr[i]<32) ptr[i]=32;
    }
 
    for(int i=0;i<strlen(ptr);i++){
        if(ptr[i]>32){
            dst=ptr+i;
            break;
        }
    }
    for(int i=strlen(dst);i>0;i--){
        if(dst[i]>32){
            dst[i+1]=0;
            break;
        }
    }
 
    src=dst;
 
    if(src.c_str()[0]=='"') src.erase(0,1);
    if(src.c_str()[src.length()-1]=='"') src.erase(src.length()-1,1);
 
    return src;
}
я пока читал - офигивал, можно в учебники вносить как нельзя писать)
это чисто Сишный бред... особенно доставило то, что он оформил src как ссылку и не константую и несмотря на то что он изменил содержимое кучей всяких c_str и внимание src = (char *) !!! тут:
C++
1
   src=dst
так он её ещё и возвратил зачем-то

вот пример развития таких "начинающих" которых Вы тут защищаете, нужно сразу им по рукам бить, через год спасибо скажут
Yandex
Объявления
16.01.2014, 03:18     Нахождение минимального элемента массива. Перевести с Паскаля на С++
Ответ Создать тему
Опции темы

Текущее время: 23:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru