Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция в заданном интервале, ошибка 1.#j при выводе ответа 
V
    Опции темы
Kruger2
Дата 14.1.2011, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Задание:
 Задание: Вычислить и вывести на экран значения аргумента и значения функции, заданной несколькими выражениями, для заданного интервала  хн ≤ x ≤ хк и шага dx изменения аргумента. Параметры a, b, c – действительные числа.


Вариант 1.


F = 1 / (a * x) - b; при х + а < 0 и с = 0

F = (x - a)/sinx; при х + a > 0 и с ≠ 0

F = 10 * x / (c - 6);  в остальных случаях



Код

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

main ()
{
     float x, xn, xk, dx, a ,b, c, F, sinx;
     
x= xn
     
     printf("Enter interval xn<= x <=xk  xn(-) to xk(+): \n");
     scanf("%f %f", &xn, &xk);
     
     printf("Enter path (dx): \n");
     scanf("%f", &dx);
     
     printf("Enter x, a, b, c: \n");
     scanf("%f %f %f %f", &x, &a, &b, &c);
    
   
     
     
  repeat:  if (x + a < 0 && c == 0)
       F = 1 / (a * x) - b;
       
        
     
       if (x + a > 0 && c !=0) 
          F = (x - a)/sinx;
        
         
          
       else 
            F = 10 * x / (c - 6); 
            
       printf("%.2f \n", F);
       
       x += dx;
       
       if (x <= xk) {
       goto repeat;
       }
       else
           printf("EOF\n\n"); 
       

system("pause");
return 0;
     
}




Ввожу интервал от 100 до 1000, с шагом 10. x = -10, a=5,  b=10, c = 0 - должен быть расчет для первого случая  F = 1 / (a * x) - b; ответ должен быть -9,98, а мне выдаёт 16,66, к тому же уходит за пределы предела 100 - 1000.

Если ввожу для второго случая  if (x + a > 0 && c !=0) 
          F = (x - a)/sinx;    x=10, a=5 b=10 c=1

получаю ошибку 1.#J

Мне кажется ошибок тут несколько: где то в интервалах, в переменных и где то ещё.

По поводу goto, я везде читал, что его нельзя юзать, но препод дал задачку именно на его примере и это какбэ требованиеsmile

Это сообщение отредактировал(а) Kruger2 - 14.1.2011, 14:07
PM MAIL   Вверх
Kruger2
Дата 14.1.2011, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Код

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

main ()
{
     float xn, xk, a, b, c, F, x, dx, sinx, xas;
     
      x= xn;
      
     printf("Enter interval xn<= x <=xk  xn(-) to xk(+): \n");
     scanf("%f %f", &xn, &xk);
     
     printf("Enter path (dx): \n");
     scanf("%f", &dx);
     
     printf("Enter a, b, c: \n");
     scanf("%f %f %f", &a, &b, &c);
     
     repeat: if (c == 0 || x + a < 0) {
        printf ("1st case     \n");
        F=1/a*x-b;
        }
        
     else if (c !=0 || x + a > 0) {
          printf ("2nd case     \n");
          F=(x-a)/sin(x);
          }
          
          else {
               printf("3rd case    \n");
               F=(10*x)/(c-6);
               }
               
       printf("%f\n\n", F);
     
               
     x +=dx;
     if (x <= xk) {
        goto repeat;
        }
     else 
     printf("End of file\n\n");
     
system ("pause");



Теперь и ответ неверный и цикла нетsmile

Это сообщение отредактировал(а) Kruger2 - 14.1.2011, 15:27
PM MAIL   Вверх
Kruger2
Дата 14.1.2011, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Что бы все таки уйти от гото попробовал через while 



Код

main ()
{
     float xn, xk, a, b, c, F, x, dx, sinx, xas;
     
     
      
     printf("Enter interval xn<= x <=xk  xn(-) to xk(+): \n");
     scanf("%f %f", &xn, &xk);
     
     printf("Enter path (dx): \n");
     scanf("%f", &dx);
     
     printf("Enter a, b, c: \n");
     scanf("%f %f %f", &a, &b, &c);
     
     x= xn;
     
     
     while (x <= xk) {
           x +=dx;   
           
      if (c == 0 || x + a < 0) {
            printf("case 1");
            F=1/(a*x)-b;
        }
                else if (c !=0 || x + a > 0) {
                    printf("case 2");
                    F=(x-a)/sin(x);
                    }
                    else {
                         printf("case 3");
                         F=(10*x)/(c-6);
                         }
        printf("%f\n\n", F);
       }
                             
system ("pause");
}


но тоже не вышло)



Тому кто поможет решить  даю  1 WMZ smile 


Это сообщение отредактировал(а) Kruger2 - 14.1.2011, 16:18
PM MAIL   Вверх
Фантом
Дата 14.1.2011, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 4
Всего: 49



В первом варианте бардак с if-ами, которые должны быть вложенными (но таковыми не являются). Дальше это исправлено, но && почему-то поменялось на ||. Там же появилось F=1/a*x-b; (в отличие от исходно правильного F=1/(a*x)-b;. Вывод - не стоит пытаться исправлять сразу несколько ошибок.  smile 

Цитата(Kruger2 @  14.1.2011,  13:58 Найти цитируемый пост)

По поводу goto, я везде читал, что его нельзя юзать, но препод дал задачку именно на его примере и это какбэ требование

Хм... а можно узнать (если не секрет), где водятся такие преподы?

PM   Вверх
A5uKa
  Дата 14.1.2011, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 2
Всего: 16



del.

Ты уже исправил, но ошибку не написал.

Это сообщение отредактировал(а) A5uKa - 14.1.2011, 17:03
PM   Вверх
Kruger2
Дата 14.1.2011, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



да не суть важно, ниже уже 2 более близких решения, как мне кажется и всё равно никаких результатов)

Добавлено через 5 минут и 1 секунду
Бардак в первом вроде поправил во втором варианте. 

&& или изменил на || и, потому что по условиям оба условия должны выполняться. && будет выполняться если хотя бы 1 утверждение верно.

формула изменилась, потому что криво формулу переписал просто.

Добавлено через 7 минут и 18 секунд
Препроды такие водятся в Молдове, бабушке под 80 лет smile 
PM MAIL   Вверх
RastaDja
Дата 14.1.2011, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: 3
Всего: 5



не знаю нужно есчё или нет, но
Код

#include "stdafx.h"
#include "iostream"
#include <sstream>
#include <math.h>

int _tmain(int argc, _TCHAR* argv[])
{
    double a,b,c;
    short xn, xk, step;
    std::cout<<"enter xn < x < xk and step \n" << "xn: ";
    std::cin>>xn;
    std::cout<<"enter xk < x < xk \n" << "xk: ";
    std::cin>>xk;
    std::cout<<"step: ";
    std::cin>>step;
    std::cout<<"enter a,b,c \n";
    std::cout<<"a:";
    std::cin>>a;
    std::cout<<"b: ";
    std::cin>>b;
    std::cout<<"c: ";
    std::cin>>c;

    short x;
    double F = 0.0;
    for(x=xn; x<=xk; x+=step){
        std::cout<<"x="<<x;
        if((x+a)<0 && c==0){//при х + а < 0 и с = 0
            F=1.0/(double)(a*x) - b;
        }else{
            if((x+a)>0 && c!=0){//при х + a > 0 и с ≠ 0
                F=(x-a)/sin((double)x);
            }else{
                F = 10 * x / (c - 6);
            }
        }

        std::cout<<" F="<<F<<std::endl;
    }


    
    return 0;
}





--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
Kruger2
Дата 14.1.2011, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



эм, а в си тоже самое можно?)

нужно нужно ещё)
PM MAIL   Вверх
Фантом
Дата 14.1.2011, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 4
Всего: 49



Цитата(Kruger2 @  14.1.2011,  17:03 Найти цитируемый пост)
&& или изменил на || и, потому что по условиям оба условия должны выполняться. && будет выполняться если хотя бы 1 утверждение верно.

На самом деле - с точностью до наоборот.  smile Логическое "И" - это именно &&.

Цитата(Kruger2 @  14.1.2011,  17:03 Найти цитируемый пост)

Препроды такие водятся в Молдове, бабушке под 80 лет

Понятно. По-видимому, это возрастное.
PM   Вверх
Kruger2
Дата 14.1.2011, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



хотя вроде понял саму задачу. сейчас попробую перевести в си
PM MAIL   Вверх
RastaDja
Дата 14.1.2011, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 337
Регистрация: 1.11.2010

Репутация: 3
Всего: 5



Цитата(Kruger2 @  14.1.2011,  17:35 Найти цитируемый пост)
эм, а в си тоже самое можно?)

нужно нужно ещё) 


все что тебе нужно, это
Код

short x;
    double F = 0.0;
    for(x=xn; x<=xk; x+=step){
        std::cout<<"x="<<x;
        if((x+a)<0 && c==0){//при х + а < 0 и с = 0
            F=1.0/(double)(a*x) - b;
        }else{
            if((x+a)>0 && c!=0){//при х + a > 0 и с ≠ 0
                F=(x-a)/sin((double)x);
            }else{
                F = 10 * x / (c - 6);
            }
        }
        std::cout<<" F="<<F<<std::endl;
    }

замени  std::cout на Print
а std::cin на scan
и вот тебе С


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
Kruger2
Дата 14.1.2011, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Код

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

main ()
{
     double a, b, c;
     short xn, xk, step, sinx;
     
     printf("Enter xn < x < xk (xn) \n", xn);
     scanf("%u", &xn);
     
     printf("Enter xk: \n", xk);
     scanf("%u", &xk);
     
     printf("Enter step: \n");
     scanf("%u", &step);
     
     printf("Enter a: \n");
     scanf("%lf", &a);
     
     printf("Enter b: \n");
     scanf("%lf", &b);
     
     printf("Enter c: \n");
     scanf("%lf", &c);
     
     short x;
     double F= 0.0;
     
     for (x = xn; x <= xk; x += step){
         printf("x= \n");
         if ((x + a)< 0 && c == 0) {
                    F = 1.0/(double) (a*x) - b;
         }else {
               if ((x + a) > 0 && c != 0){
                      F = ((x - a) / sinx);
                      }else {
                            F = 10 * x / (c - 6);
                       }
               }
               
               printf("F= \n", &F);
         }
         
         
 system ("pause");    
 return 0;    
}     
     

     

Не выводит ответов:(

К тому же как пишу sin (x) выдает ошибку  smile 
PM MAIL   Вверх
Dov
Дата 14.1.2011, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



А так тебя не устроит? 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
mes
Дата 14.1.2011, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Dov @  14.1.2011,  20:02 Найти цитируемый пост)
А так тебя не устроит?  

 
Цитата

 double f = -999;                         /* ошибка деления на ноль*/

а что ж не воспользоваться NaN`ом :
 
Цитата

 double f = .0/0;                         /* ошибка деления на ноль*/

остальной код не смотрел...


Это сообщение отредактировал(а) mes - 14.1.2011, 21:11


--------------------
PM MAIL WWW   Вверх
Dov
Дата 14.1.2011, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(mes @  14.1.2011,  20:11 Найти цитируемый пост)
а что ж не воспользоваться NaN`ом :

не знал про такую возможность. теперь буду знать, спасибо.  smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Kruger2
Дата 14.1.2011, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



dav

ну вроде работает, но я попытался сделать, при вводе значений с клавиатуры и выдаёт бесконечный цикл дивайдед бай зиро)


Код

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

double func(double x, double a, double b, double c)
{
   double f = -999;                         

   if((x + a) < 0 && c == 0 && (a * x) != 0 
      f = 1. / (a * x) - b;
   else if((x + a) > 0 && c != 0 && x != 0  
      f = (x - a) / sin(x);
   else if(c != 6.)                        
      f = 10. * x / (c - 6.);

   return f;
}

int main()
{
    double f, x, xn, xk, dx, a, b, c;
    printf("Enter xn < x < xk (xn) \n", xn);
     scanf("%lf", &xn);
     
     printf("Enter xk: \n", xk);
     scanf("%lf", &xk);
     
     printf("Enter step: \n");
     scanf("%lf", &dx);
     
     printf("Enter a: \n");
     scanf("%lf", &a);
     
     printf("Enter b: \n");
     scanf("%lf", &b);
     
     printf("Enter c: \n");
     scanf("%lf", &c);
   
    puts("Argument\t\tValue");
    x = xn;

repeat:
    printf("%6.2lf\t\t", x);
    f = func(x, a, b, c);
    f == -999 ? puts("   divide by zero") : printf("%15lf\n", f);

    x += dx;
    if(x <= xk)
       goto repeat;
   
   system ("pause");
    return 0;
}


Как организовать ввод с клавы?

Тут получается сначала создаётся прототип функции и потом она вызывается, в зависимости от переменных?

Через for как то красивее былоsmile
PM MAIL   Вверх
Dov
Дата 14.1.2011, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(Kruger2 @  14.1.2011,  20:38 Найти цитируемый пост)
ну вроде работает, но я попытался сделать, при вводе значений с клавиатуры и выдаёт бесконечный цикл дивайдед бай зиро)

не знаю, у меня нормально работает. 
Цитата(Kruger2 @  14.1.2011,  20:38 Найти цитируемый пост)
Как организовать ввод с клавы?

так как ты его и сделал.
Цитата(Kruger2 @  14.1.2011,  20:38 Найти цитируемый пост)
Тут получается сначала создаётся прототип функции и потом она вызывается, в зависимости от переменных?

что-то в этом роде.
Цитата(Kruger2 @  14.1.2011,  20:38 Найти цитируемый пост)
Через for как то красивее было

а это кто писал? не ты ли?  smile 
Цитата(Kruger2 @  14.1.2011,  12:58 Найти цитируемый пост)
По поводу goto, я везде читал, что его нельзя юзать, но препод дал задачку именно на его примере и это какбэ требование




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Kruger2
Дата 14.1.2011, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



код выше, ввожу теже данные, что были у тебя в проге и получаю
xn = -50., xk = 50., dx = 10., a = 505., b = -10., c = 6.;

F=
X= 

и всё
PM MAIL   Вверх
Dov
Дата 14.1.2011, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(Kruger2 @  14.1.2011,  22:03 Найти цитируемый пост)
код выше, ввожу теже данные, что были у тебя в проге и получаю

а вот я получаю:
Цитата
Enter xn
-50
Enter xk:
50
Enter step:
10
Enter a:
505
Enter b:
-10
Enter c:
6
Argument                Value
-50.00             -2115.294176
-40.00               731.432524
-30.00              -541.480644
-20.00               575.061867
-10.00              -946.654440
0.00             divide by zero
10.00               909.891161
20.00              -531.247629
30.00               480.753843
40.00              -624.066282
50.00              1734.160090




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Kruger2
Дата 14.1.2011, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



пилять копи паст моей проги?)
может мой компилятор на си чего то не воспринимает?)

Добавлено через 11 минут и 22 секунды
получилось, перезашёл, пересохранил и вышло, спасибо)

ещё вариантик через for помоги допилить. где я там ошибся?

Код

#include <stdio.h>
#include <math.h>
main ()
{
     double a, b, c;
     short xn, xk, step, sinx;
     
     printf("Enter xn < x < xk (xn) \n", xn);
     scanf("%u", &xn);
     
     printf("Enter xk: \n", xk);
     scanf("%u", &xk);
     
     printf("Enter step: \n");
     scanf("%u", &step);
     
     printf("Enter a: \n");
     scanf("%lf", &a);
     
     printf("Enter b: \n");
     scanf("%lf", &b);
     
     printf("Enter c: \n");
     scanf("%lf", &c);
     
     short x;
     double F= 0.0;
     
     for (x = xn; x <= xk; x += step){
         printf("x= \n");
         if ((x + a)< 0 && c == 0) {
                    F = 1.0/(double) (a*x) - b;
         }else {
               if ((x + a) > 0 && c != 0){
                      F = ((x - a) / sinx);
                      }else {
                            F = 10 * x / (c - 6);
                       }
               }
               
               printf("F= \n", &F);
         }
         
         
 system ("pause");    
 return 0;    
}     

  

П.С.

Кошелк вмз в студию) ну или в личку smile 
PM MAIL   Вверх
Dov
Дата 14.1.2011, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(Kruger2 @  14.1.2011,  22:36 Найти цитируемый пост)
может мой компилятор на си чего то не воспринимает?)

вполне возможно... 
может прокладку?



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Kruger2
Дата 15.1.2011, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



см предыдущее сообщение)
PM MAIL   Вверх
миг
Дата 15.1.2011, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 15.9.2008

Репутация: нет
Всего: 1



Цитата(Фантом @ 14.1.2011,  16:57)

Хм... а можно узнать (если не секрет), где водятся такие преподы?

У нас в институте(МАМИ) был препод хорошо знал высшую математику. и вот заставили его вести фортран.. т.к. язык программирования он знал плохо, то очень часто ходил и спрашивал других преподов, что значит тот или иной оператор.. Стоило написать программку которая выходит за круг понятий этого препода, то он сразу терялся..  Затем он проверял выходной результат и если результат сходиться, то засчитывал работу. Некоторые студенты его даже обманывали с выходными данными, а он не замечал..
--------------------
Oaks may fall when reeds stand the storm.
PM MAIL   Вверх
Kruger2
Дата 15.1.2011, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



Код

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

main ()
{
     double F, x, a, b, c, xn, xk, step, sinx;
     
     printf("Enter xn < x < xk (xn) \n", xn);
     scanf("%lf", &xn);
     
     printf("Enter xk: \n", xk);
     scanf("%lf", &xk);
     
     printf("Enter step: \n");
     scanf("%lf", &step);
     
     printf("Enter a: \n");
     scanf("%lf", &a);
     
     printf("Enter b: \n");
     scanf("%lf", &b);
     
     printf("Enter c: \n");
     scanf("%lf", &c);
     
    
     
     
    for(x=xn; x<=xk; x+=step){
       printf ("x= \n", &x);
        if((x+a)<0 && c==0)
            F=1.0/(double)(a*x) - b;
        }else{
            if((x+a)>0 && c!=0)
                F=(x-a)/sin((double)x);
            }else{
                F = 10 * x / (c - 6);
            }
        }
        printf(" F= \n", &F);
    }
         
         
system("pause");
 return 0;    

}     
     

     

объясните кто нить, почему мне тут выдаёт просто 
F=
F=
F=

 и т.д., 2 стены уже сломал)

Это сообщение отредактировал(а) Kruger2 - 15.1.2011, 22:14
PM MAIL   Вверх
Фантом
Дата 15.1.2011, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 4
Всего: 49



Цитата(Kruger2 @  15.1.2011,  22:13 Найти цитируемый пост)
объясните кто нить, почему мне тут выдаёт просто 
F=
F=
F=

 и т.д., 2 стены уже сломал)

Спокойнее надо быть.  smile Посмотрите на строку из Вашего кода:
Код

printf(" F= \n", &F);

Первый параметр printf - это формат вывода. В формате могут находиться поля для подстановки значений, а также обычные символы (которые в таком виде и будут выведены). Но в Вашей форматной строчки никаких полей для подстановки значений нет, поэтому все, что печатается - обычные символы из форматной строки.

Кроме этого, Вам явно надо печатать значение переменной F, а не значение указателя на нее, так ведь? Поэтому & там совершенно лишнее. Итого нормальная строка должна выглядеть так:
Код

printf(" F= %f\n",F);


Кстати, странно, что она Вам вообще хоть что-то печатает - в этом тексте громадное количество синтаксических ошибок. Первый else не относится к if (поскольку тот зарыт внутри цикла), перед вторым не завершена ; основная часть if , тип возвращаемого функцией main значения не определен (это для С89, конечно, не фатально, но нехорошо).

PM   Вверх
Kruger2
Дата 16.1.2011, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 9.1.2011

Репутация: нет
Всего: нет



спасибо, я с этим разобралсяsmile в соседнюю тему перенес, ибо тут я уже несколько раз разные вопросы задавалsmile рядом вопрос как сделать проверку деления  на ноль, буду благодарен за помощЬsmile
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0772 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.