Учимся, если заявления. Будет ли это работать?

0

будет ли этот код работать? У него нет никаких ошибок, но мой компилятор не будет показывать никаких результатов:

#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.

  • 1
    использовать for loop в этом случае
  • 0
    Вы модифицируете локальную копию (параметр smallest ) и всегда возвращаете одно и то же значение.
Показать ещё 4 комментария
Теги:
if-statement

4 ответа

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

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

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

  • 0
    Почему отрицательный голос?
0

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

  • 0
    Я был бы признателен, чтобы сказать, что не так этот ответ.
-1
#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;
}
  • 0
    _tmain ??? Что не так с главным?
  • 0
    а что такое stdafx.h? и что такое _TCHAR?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню