Форум программистов, компьютерный форум CyberForum.ru

не могу понять в чем ошибка - C++

Восстановить пароль Регистрация
 
skitals
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 13
29.05.2013, 20:54     не могу понять в чем ошибка #1
Вот мое задание:
Вычислить и вывести на экран в виде таблицы значения функции F на интервале от Х[нач] до Х[кон] с шагом dx.
Функция F:
-ax^2 -b при x<5 и с!=0 (!= это не равно)
(х-a)/x при x>5 и с=0
-(x/c) в остальных случаях

где a,b,c - действительные числа.
Функция F должна принимать действительное значение, если выражение
(Aц ИЛИ Bц) МОД2 (Aц ИЛИ Cц) не равно нулю, и целое значение в противном случае . Через Aц , Bц, и Сц обозначены целые части значений a,b,c, операции И, ИЛИ и МОД2 (сложение по модулю 2) - поразрядные. Значения a,b,c, Х[нач] ,X[кон], dx ввести с клавиатуры.

Не могу найти ошибку, совсем не знаю С++, но для зачета надо сдать эту задачку, с помощью интернет ресурсов что то сделал, но не могу понять и найти в чем ошибся
Вот программа:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
   #pragma hdrstop
#include <stdio.h>
#include <conio.h>
 
 
int main(int argc, char* argv[])
{
   float Xn,Xk,dX,a,b,c,x,f;
   unsigned int Ac,Bc,Cc;
 
  do
{
   puts("input Xn, Xk");
   scanf("%f%f",&Xn, &Xk);
}
   while(Xk<=Xn);
   do
{
   puts("input dX");
   scanf("%f",&dX);
}
   while ((dX<=0)||(dX>=Xk-Xn));
 
   puts("input a,b,c");
   scanf("%f%f%f",&a,&b,&c);
   Ac=(unsigned int)a;
   Bc=(unsigned int)b;
   Cc=(unsigned int)c;
   for(x=Xn;x<=Xk;x+=dX)
   {
     if((x<5)&&(c!=0))
   { 
     F =(-a * x * x) - b;
   }
     else
   {
     printf("%f\tNo\n",c);
     continue;
   }
 
   else
 
   if((x>5)&&(c=0))
   {
    F=(x-a)/x;
    } 
   else
   {
 
   printf("%f\tNo\n",c);
   continue;
   }
   else
   { 
     F=(-x)/c;
 
    else
    {
    printf("%f\tNo\n",c);
    continue;
    }
 
if((int(Ac) | int(Bc)) ^ (int(Ac) & int(Cc)))
printf("|%.2f |%.2f |\n", c, F);
else
printf("|%.2f |%d |\n", c, int(F));
   }
   getch();
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2013, 20:54     не могу понять в чем ошибка
Посмотрите здесь:

не могу понять в чем ошибка. C++
Не могу понять в чем ошибка C++
C++ не могу понять в чем ошибка
Не могу понять в чем ошибка C++
C++ не могу понять в чем ошибка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
eocron
Кактус
 Аватар для eocron
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
29.05.2013, 21:09     не могу понять в чем ошибка #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
 
double F(double x, double a, double b, double c)
{
       if(x<5 && c!=0)
       {
              return - a*x*x - b ;
       }
       else if(x>5 && c==0)
       {
            return (x - a)/x;
       }
       else
       {   
           return -( x / c ) ;
       }
}
int main()
{
    double a,b,c;
    double x1,x2,dx;
    
    cout<<"Please enter F() parametries: a, b, c\n";
    cin>>a;
    cin>>b;
    cin>>c;
    cout<<"Please enter interval [ x1, x2 ] and step dx...\n";
    cin>>x1;
    cin>>x2;
    cin>>dx;
 
    for(double i = x1; i<=x2; i+=dx)
    {
               cout<<F(i,a,b,c)<<endl;
    }
}
skitals
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 13
29.05.2013, 21:34  [ТС]     не могу понять в чем ошибка #3
а в чем у меня там ошибка подскажите пожалуйста, просто хотелось бы разобраться
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
29.05.2013, 21:54     не могу понять в чем ошибка #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int main(int argc, char* argv[])
{
   float Xn,Xk,dX,a,b,c,x,f;
   unsigned int Ac,Bc,Cc;
  do
  {
       puts("input Xn, Xk");
       scanf("%f%f",&Xn, &Xk);
  }while(Xk<=Xn);
   do
  {
       puts("input dX");
       scanf("%f",&dX);
  }while ((dX<=0)||(dX>=Xk-Xn));
 
   puts("input a,b,c");
   scanf("%f%f%f",&a,&b,&c);
   Ac=(unsigned int)a;
   Bc=(unsigned int)b;
   Cc=(unsigned int)c;
   for(x=Xn;x<=Xk;x+=dX)
   {
        if((x<5)&&(c!=0))
           F =(-a * x * x) - b;
        else if((x>5)&&(c==0))
           F=(x-a)/x;
        else
           F=(-x)/c;
        if( (Ac | Bc) ^ (Ac & Cc))
           printf("|%.2f |%.2f |\n", c, F);
        else
           printf("|%.2f |%d |\n", c, int(F));
   }
   getch();
   return 0;
}
eocron
Кактус
 Аватар для eocron
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
29.05.2013, 21:58     не могу понять в чем ошибка #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   else
   {
 
   printf("%f\tNo\n",c);
   continue;
   }
   else
   { 
     F=(-x)/c;
 
    else
    {
    printf("%f\tNo\n",c);
    continue;
    }
у вас тут три else подряд идут, причем предпоследний без закрывающей скобки. Очевидно вы имели ввиду вот такую конструкцию:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  for(float x=Xn;x<=Xk;x+=dX)
   {
     if((x<5)&&(c!=0))
     { 
         F =(-a * x * x) - b;
     }
     else if((x>5)&&(c=0))
     {
          F = (x-a)/x;
     } 
     else
     {
           F=(-x)/c;
     }
 
     //
   }
skitals
0 / 0 / 0
Регистрация: 14.05.2013
Сообщений: 13
29.05.2013, 23:08  [ТС]     не могу понять в чем ошибка #6
Цитата Сообщение от eocron Посмотреть сообщение
F =(-a * x * x) - b;
тут выдает какую то ошибку

Добавлено через 15 минут
все исправил

Добавлено через 11 минут
вроде получилось
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
int main(int argc, char* argv[])
{
float Xn,Xk,dX,a,b,c,x,F;
unsigned int Ac,Bc,Cc;
do
{
puts("input Xn, Xk");
scanf("%f%f",&Xn, &Xk);
}while(Xk<=Xn);
do
{
puts("input dX");
scanf("%f",&dX);
}while ((dX<=0)||(dX>=Xk-Xn));

puts("input a,b,c");
scanf("%f%f%f",&a,&b,&c);
Ac=(unsigned int)a;
Bc=(unsigned int)b;
Cc=(unsigned int)c;
for(x=Xn;x<=Xk;x+=dX)
{
if((x<5)&&(c!=0))
{
F =-a*(x*x)- b;
}
else if((x>5)&&(c==0))
{
F=(x-a)/x;
}
else
{
F=(-x)/c;
}
if( (Ac | Bc) ^ (Ac & Cc))
printf("|%.2f |%.2f |\n", c, F);
else
printf("|%.2f |%d |\n", c, int(F));
}
getch();
return 0;
}
Yandex
Объявления
29.05.2013, 23:08     не могу понять в чем ошибка
Ответ Создать тему
Опции темы

Текущее время: 11:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru