C программирование, если заявление - PullRequest
0 голосов
/ 08 октября 2009

Я знаю, что в C вы можете использовать do-while для одиночных целых чисел и символов, но мне было интересно, можно ли использовать одну и ту же функцию do-while для целых групп чисел?

РЕДАКТИРОВАТЬ: Хорошо, я действительно смущен относительно того, что этот домашний вопрос задает. Но я думаю, что я получаю вопрос, просто не знаю, какая функция будет работать. Он хочет, чтобы пользователь ввел несколько температур. Затем программа измеряет температуры и проверяет их по трем категориям. Эти три категории делятся на то, насколько жарко или холодно. 85 или выше - 1, 60-84 - другое, и меньше 60 - другое. Я думаю, что вместо того, чтобы снова печатать цифры, он просто подсчитает температуру в каждой категории, а затем даст общее количество для каждой категории в конце. Имеет ли это смысл? Может кто-нибудь сказать мне, с чего начать?

Ладно, ребята, я до сих пор понял:

    #include <stdio.h>

int main (void)
{

    int temp;
    double average;
    int hot_days, pleasant_days, cold_days;
    char x;
    hot_days =  0;
    pleasant_days = 0;
    cold_days =     0;

    printf("Enter the temperatures you wish to be categorized, each followed by a space.\n\n");

do
{
    scanf("%d", &temp);
    if (temp >= 85)
        hot_days++;
    if (temp < 60)
        cold_days++;
    else   pleasant_days++;
{

while(x != 'q')
printf("Insert 'q' and press return.");
scanf("%c", &x);

printf("\n*************\n\nHot Days: %d\nPleasant Days: %d\nCold Days: %d\n",
        hot_days, pleasant_days, cold_days);



    return 0;

}   

Ответы [ 5 ]

2 голосов
/ 08 октября 2009

В ответ на ваши новые правки вопрос гораздо яснее и довольно прост:

  1. Во-первых, нам нужно три int с (или unsigned int с в зависимости от ваших предпочтений). Давайте назовем их highs, middles и lows. Мы будем использовать их для отслеживания того, сколько температур в данном диапазоне температур мы видели. В качестве альтернативы, мы могли бы использовать массив или структуру, но пока это излишне.
  2. Во-вторых, нам нужно выполнить цикл. Я не знаю, какой сигнал говорит, что ваше назначение должно означать «конец ввода», но это должно быть условие цикла.
  3. Внутри цикла вы должны прочитать число, проверить, в каком диапазоне находится это число, и увеличить значение соответствующей переменной счетчика (например, high++, если число равно < 80).
  4. После того, как мы прочитали число и увеличили счетчик, мы, вероятно, должны проверить конечные условия (то есть спросить пользователя «Вы закончили?» Или что-то еще) и затем завершить цикл.
  5. Как только мы выйдем из цикла, просто распечатать значения наших трех переменных.
1 голос
/ 08 октября 2009

как это?

int num;
char c;

do
{
  printf ("Input number: ");
  scanf("%d",&num);

  //do your thing here with num. Store it, categorize it, etc...
  //e.g -pseudocode
  if (num below 59) print num, category 1
  else if (num between 60,84) print num category 2
  else print num category 3

  printf("Continue?");
  scanf("%c",&c);
}while (c!='q');

//Now write a do while loop to print out your numbers.
1 голос
/ 08 октября 2009

Один способ справиться с подсчетом категорий - создать массив с тем же количеством элементов, что и у категорий, а затем увеличивать счетчик каждый раз, когда вы нажимаете значение, которое должно быть в этой категории. Так, если число 85 или больше, увеличьте нулевой элемент в массиве, если это 60-84, увеличьте первый элемент и т. Д.

(И не забудьте обнулить значения в массиве до увеличения их значения. В противном случае вы получите очень странные результаты.)

РЕДАКТИРОВАТЬ: быстрый и грязный псевдокод:

int categories[3];

zero_out_categories_array;

do
  int value;

  read_into value;

  if (value >= 85)
    categories[0]++;
  else 
    if (value >= 60)
      categories[1]++;
    else
      categories[2]++;
while not_done;

print "High: " + categories[0];
print "Medium: " + categories[1];
print "Low: " + categories[2];
0 голосов
/ 08 октября 2009
int main (void)
{
    int temp;
    double average;

    hot_days      = 0;
    pleasant_days = 0;
    cold_days     = 0;

    printf("enter the temperatures you want to be categorized. Press Enter after each. -1 to end.");

    do
    {
        scanf("%d", &temp);

        if (temp == -1)
            break;

        if(temp >= 85)
            hot_days++;

        if(60 < temp && temp <= 84)
            pleasant_days++;

        if(temp <= 60)
            cold_days++;
    } while (temp != -1);

    printf("%d Hot days, %d Pleasant Days and %d Cold Days\n",
        hot_days, pleasant_days, cold_days);
}
0 голосов
/ 08 октября 2009

как это?

int x=1,char c ='a',float y=0.1f;

do
{
 /* do something */
} while(x == 1 && c == 'a' && y == 0.1f); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...