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

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

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

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

16.01.2014, 00:08. Просмотров 438. Ответов 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++
Вычислить произведение P = Хmin*Ymin минимального элемента xmin = min{xi} массива xi и минимального элемента ymin = min{yi} массива yi C++
C++ Нахождение минимального элемента в стеке
Нахождение максимального и минимального элемента в списке 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
22832 / 14974 / 4304
Регистрация: 22.10.2011
Сообщений: 26,539
Записей в блоге: 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
22832 / 14974 / 4304
Регистрация: 22.10.2011
Сообщений: 26,539
Записей в блоге: 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Эксперт С++
6975 / 4146 / 592
Регистрация: 29.11.2010
Сообщений: 10,995
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     Нахождение минимального элемента массива. Перевести с Паскаля на С++
Ответ Создать тему
Опции темы

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