Этот код будет работать? Похоже, ошибок нет, но мой компилятор не покажет никаких результатов:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;
/* declaration */


int smallest (int i1, int i2, int i3, int i4, int i5, int smallest){
    if (i1 < smallest){
        smallest = i1;
    }
    else if (i2 < smallest) {
        smallest = i2;
    }
    else if (i3 < smallest) {
        smallest = i3;
    }
    else if (i4 < smallest) {
        smallest = i4;
    }
    else if (i5 < smallest){
        smallest = i5;
    }
    else {
        smallest = smallest; 
    }
    return (0);
}

Я пытаюсь выполнить задание HW для своего класса C ++, и это один из вопросов.

Предположим, у меня есть пять переменных int с именами i1, i2, i3, i4, and i5 Преобразуйте этот псевдокод в код C или C ++:

let smallest = smallest(i1, i2, i3, i4, i5)

Также в своих конспектах лекций он показывает это на подобном примере

std::string smallest;
std::string largest;
if (s < t) {
    smallest = s;
    largest = t;
}

else if (s > t) {
    smallest = t;
    largest = s;
}

else {
    smallest = t; //change the value that is stored in s
    largest = s; //change the value that is stored in t
}

std::cout << smallest << std::endl;
std::cout << largest << std::endl;

Вот почему я использовал операторы if else.

0
user3424577 16 Мар 2014 в 04:32
1
Используйте for loop в этом случае
 – 
billz
16 Мар 2014 в 04:33
Вы изменяете локальную копию (параметр smallest) и всегда возвращаете одно и то же значение.
 – 
dyp
16 Мар 2014 в 04:33
Какие результаты вы хотели бы видеть? Вы нигде не вызываете функцию...
 – 
Paweł Stawarz
16 Мар 2014 в 04:33
Вероятно, вам также следует использовать return smallest; вместо return 0. Ваш код сейчас выглядит как Visual Basic, но в C++ возвращаемое значение функции на месте использования всегда указывается в самом выражении return.
 – 
Adam D. Ruppe
16 Мар 2014 в 04:36
Как насчет того, чтобы добавить туда оператор switch? ;)
 – 
Joe DF
16 Мар 2014 в 04:39

4 ответа

Лучший ответ
  1. Вы изменяете наименьшее, которое передается. Не делайте этого.
  2. Создайте в своей функции локальную переменную типа int и используйте ее для отслеживания самых маленьких.
  3. Удалите else и просто сделайте if. Вам нужно проверить все переданные целые числа.
  4. Сохраните наименьшее значение i только в локальной переменной. Он будет перезаписан, если одна из других переменных i будет меньше.
    1. Возвращает локальную переменную, а не 0.
  5. Создайте функцию int main и вызовите наименьшую со всеми необходимыми параметрами из main.
  6. Сохраните результат в локальном int в main.
  7. Распечатайте результат.
1
Engineer2021 16 Мар 2014 в 04:37

В этом коде нет функции main(), поэтому ничего не произойдет, и функция не может быть вызвана.

Кстати, вы не изменяете переменную smallest после выхода из функции. Вместо этого попробуйте вернуть smallest.

0
Blue Ice 16 Мар 2014 в 04:35

Допустим, вы передали 4,3,2,1 и наименьшее значение равно 5. Затем ваша функция (которая должна возвращать значение smallest, а не 0) сообщит, что 4 является наименьшим. Вам нужно удалить ветви else и проверить каждое передаваемое значение.

-1
Marius Bancila 16 Мар 2014 в 04:38
Я был бы признателен за слово о том, что было не так в этом ответе.
 – 
Marius Bancila
17 Мар 2014 в 01:04
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>

using namespace std;

int checkSmallest(int i1, int i2, int i3, int i4, int i5);

int _tmain(int argc, _TCHAR* argv[])
{
    int smallestAtm = checkSmallest(-8, 4, 3, 7, 8);
    cout << smallestAtm; 
    std::cin.get();
    return 0;
}

int checkSmallest(int i1, int i2, int i3, int i4, int i5)
{
    int curSmallest = 0;

    if (i1 < curSmallest)
        curSmallest = i1;
    if (i2 < curSmallest)
        curSmallest = i2;
    if (i3 < curSmallest)
        curSmallest = i3;
    if (i4 < curSmallest)
        curSmallest = i4;
    if (i5 < curSmallest)
        curSmallest = i5;

    return curSmallest;
}
-2
Yes. 16 Мар 2014 в 04:43
А что такое stdafx.h? также что такое _TCHAR?
 – 
user3424577
16 Мар 2014 в 04:56