Как напечатать другой символ в зависимости от значения? - PullRequest
0 голосов
/ 24 сентября 2019

Мне было поручено создать программу, которая отображает - или + в зависимости от значения из функции.

Чтобы сделать его немного более понятным, вывод для несколькихразные части должны выглядеть примерно так:

07.87 |----+---
12.97 |----+----+---
02.79 |---

По сути, каждый 5-й символ должен быть +, где остальные - -.Максимальное значение, которое может появиться - 15.

Пока у меня есть это, но оно не работает;

if (distance(lat_2, long_2, LAT_1, LONG_1) == 5 || 10 || 15){
     printf("+");
 }
 else{
    printf("-");
 }

Что я делаю не так?Если вам нужна дополнительная информация, не стесняйтесь спрашивать.

Ответы [ 5 ]

2 голосов
/ 24 сентября 2019

Это условие

distance(lat_2, long_2, LAT_1, LONG_1) == 5 || 10 || 15

эквивалентно

( distance(lat_2, long_2, LAT_1, LONG_1) == 5 ) || ( 10 ) || ( 15 )

Поскольку 10 и 15 не равны нулю, тогда условие всегда будет иметь значение true.

Вы можете переписать его следующим образом

int value = distance(lat_2, long_2, LAT_1, LONG_1);

if ( value != 0 && value % 5 == 0 ){
     printf("+");
 }
 else{
    printf("-");
 }
1 голос
/ 24 сентября 2019

Действительно неясно, как ваша функция distance связана с «каждым пятым символом».Однако, возможно, вы ищете «по модулю», и это может быть тем, что вы хотите:

int dist = distance(lat_2, long_2, LAT_1, LONG_1);
if (dist % 5 == 0){
  printf("+");
}
else{
  printf("-");
}

В качестве альтернативы, если 0 не требуется:

int dist = distance(lat_2, long_2, LAT_1, LONG_1);
if (dist != 0 && dist % 5 == 0){
  printf("+");
}
else{
  printf("-");
}

Если нет, то вам нужночтобы дать нам больше информации о том, что вы хотите сделать.

0 голосов
/ 24 сентября 2019

Перетащите эту строку в одну простую строку, используя модуль (%) и троичный оператор:

 printf("%c", distance(lat_2, long_2, LAT_1, LONG_1)%5 ? '-' : '+');

Объяснение:

printf("%c",...);

Напечатает один символиз параметров.В конечном итоге это будет либо '-', либо '+'.

. Выражение distance(lat_2, long_2, LAT_1, LONG_1) % 5 будет равно false, если значение равно 5, 10, 15, 20 и т. Д ...., и будетбыть true для всех других значений.

0 голосов
/ 24 сентября 2019
int dist=distance(lat_2, long_2, LAT_1, LONG_1); 
for(int i=0; i<dist;i++){ 
printf("%c", (dist % 5 == 0) ? '+' : '-'); 
}
0 голосов
/ 24 сентября 2019

На самом деле вы не можете проверить расстояние с помощью 5, 10 или 15, как вы это сделали.

Требуется непрерывное уменьшение расстояния до тех пор, пока оно не станет меньше нуля.И печатайте + каждый 5-й раз, иначе напечатайте -

Пример кода приведен ниже.

int count = 0;
double distance;
...
while (distance >= 0)
{
    distance -= 1;
    count++;
    if (count%5 == 0)
        printf ("+");
    else
        printf ("-");
}

Следует помнить, что поскольку используется double, всегда есть возможностьошибок, вводимых из-за операций с плавающей запятой.Для небольших значений и точности, как в вашем примере, я не думаю, что должны быть какие-либо проблемы.

...