2012-01-04 3 views
0

Мой вопрос: как я могу использовать цикл FOR (или лучше рекомендованную стратегию) для печати различных результатов на основе пользовательского ввода.Использование цикла «для» для вычисления инкрементной точки данных в C

ОК, позвольте мне подробнее остановиться.

Я ошибся с моим объяснением, из-за того, что не думал об этом. я извиняюсь.

Пользователь вводит минимум 0 фунтов на 1000 фунтов на квадратный дюйм, а затем максимум 3000 фунтов на квадратный дюйм. , тогда количество образцов, которые нужно взять. Мы скажем образцы с интервалом в 100 фунтов на квадратный дюйм.

Пример:

  1. ввести минимальное давление 1000 фунтов на квадратный дюйм //
  2. ввести максимальное давление // 3000 фунтов на квадратный дюйм
  3. , что является интервал между образцом (давление) // 50 фунтов на квадратный дюйм
  4. для каждого интервал calculateDensity

Код:

#include <stdio.h> 
#include <math.h> 

#define N2Denstiy 1.251 //1.251 g/l mole weight 
#define ATM 0.0680459639 //Pressure in PSI time ATM 
#define R 0.08206 //gas constant 


float calculateDensity(float pres, float temp, float moleWeight); 

float calculateDensity(float pres, float temp, float moleWeight) { 

return moleWeight * (pres * ATM)/(temp * R); 

} 


int main (int argc, const char * argv[]) 
{ 
    float result; 
    float temp = 77.0; 

    float i, min_pressure, max_pressure, sample_interval; 

    printf("Enter minimum Pressure, maximum pressure and interval: "); 

    scanf("%f %f %f", &min_pressure, &max_pressure, &sample_interval); 

    for(i = min_pressure; i <=max_pressure; i = i + sample_interval) 



    // result = calculateDensity(i, temp, N2Denstiy); 
    //  printf("%f\n",result); 

    printf("%f ", i); 
    printf("\n"); 


    return 0; 

} 

Результаты здесь верны для основного цикла. Тем не менее, я хочу рассчитать значение плотности, а затем отобразить результаты.

Введите минимальное давление, максимальное давление и интервал: 1000 3000 50 1000,000000 +1050,000000 1100,000000 1150,000000 +1200,000000 +1250,000000 1300,000000 1350,000000 +1400,000000 +1450,000000 +1500,000000 +1550,000000 1600,000000 +1650,000000 1700,000000 1750,000000 1800,000000 +1850,000000 +1900,000000 +1950,000000 2000,000000 +2050,000000 +2100,000000 +2150,000000 2200,000000 2250,000000 2300,000000 +2350,000000 +2400,000000 +2450,000000 +2500,000000 +2550,000000 +2600,000000 2650.000000 2700.000000 2750.000000 2800.000000 2850.000000 2900.000000 2950.000000 3000.000000

+0

Если рассчитать 30 образцов с 50psi расстояния вы только охватывают диапазон 29 * 50psi = 1450psi. Как это соответствует вашим значениям min/max? Или я совсем не понял что-то? – Howard

ответ

0

Попробуйте так:

float i; 
for(i = min_pressure; i <= max_pressure; + += increment_pressure) { 
    calculatePressure(i, temp, moleWeight); 
} 
0

Скажем вам номер, если образцы является numSamples:

for (int i = 0 ; i < numSamples ; i++) 
{ 
    //get data from user - pres, temp, moleWeight 
    float result = calculateDensity(pres, temp, moleWeight); 
    printf("%f\n",result); 
} 
0

Насколько я понимаю ваш вопрос вы хотите:

int i; 
for(i = 0; i < sample_interval && increment_pressure * i + min_pressure < max_pressure; i++) { 
    printf("%f\n", calculatePressure(increment_pressure * i + min_pressure, temp, moleWeight)); 
} 
Смежные вопросы