Этот код будет работать? Похоже, ошибок нет, но мой компилятор не покажет никаких результатов:
#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.
4 ответа
- Вы изменяете наименьшее, которое передается. Не делайте этого.
- Создайте в своей функции локальную переменную типа int и используйте ее для отслеживания самых маленьких.
- Удалите else и просто сделайте if. Вам нужно проверить все переданные целые числа.
- Сохраните наименьшее значение i только в локальной переменной. Он будет перезаписан, если одна из других переменных i будет меньше.
- Возвращает локальную переменную, а не 0.
- Создайте функцию int main и вызовите наименьшую со всеми необходимыми параметрами из main.
- Сохраните результат в локальном int в main.
- Распечатайте результат.
В этом коде нет функции main()
, поэтому ничего не произойдет, и функция не может быть вызвана.
Кстати, вы не изменяете переменную smallest
после выхода из функции. Вместо этого попробуйте вернуть smallest
.
Допустим, вы передали 4,3,2,1 и наименьшее значение равно 5. Затем ваша функция (которая должна возвращать значение smallest
, а не 0
) сообщит, что 4 является наименьшим. Вам нужно удалить ветви else
и проверить каждое передаваемое значение.
#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;
}
Похожие вопросы
Новые вопросы
c++
C++ — это язык программирования общего назначения. Изначально он разрабатывался как расширение C и имел аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде, который будет скомпилирован с помощью компилятора C++. Используйте тег версии для вопросов, связанных с конкретной стандартной версией [C++11], [C++14], [C++17], [C++20] или [C++23]. и т.д.
for loop
в этом случаеsmallest
) и всегда возвращаете одно и то же значение.return smallest;
вместоreturn 0
. Ваш код сейчас выглядит как Visual Basic, но в C++ возвращаемое значение функции на месте использования всегда указывается в самом выраженииreturn
.switch
? ;)