Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2012, 17:35   #1
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
Вопрос оператов switch в си

условие задачи таково: организовать меню, в котором будет 3 пункта (1- сумму n членов ряда для заданного х, 2- сумму членов ряда с точностью ε для заданного х и их количество, 3- сумму членов ряда с точностью ε для заданной последовательности х) вот текст программы:
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>

void main()
{int n,a;
 float x,s,e,h;
 clrscr();
while (a!=4)
 {clrscr();
  printf("                          MENU\n");
  printf("           1-summa n chleniv dla zadanogo x\n");
  printf("2-chleniv rady z tochnistu e dla zadanogo x ta ix kilkist\n");
  printf("3-chleniv rady z tochnistu e dla zadanoi poslidovnosti x\n");
  printf("                      4-vihod");
  scanf("%d",&a);
  switch(a)
   {
   case 1:
    {clrscr();
     s=1+pow(3*x,2)+5/x*pow(x,4)+7/3*pow(x,6);
     x=0.3;
     for (n=1;n<6;n++)
      {a=(2*n+1)/n*pow(x,2*n);
       n=n+1;
       s=s+a;
      }
     printf("summa=%1.1f",s);
     getch();
     break;
    }
   case 2:
    {clrscr();
     x=0.3;
     e=0.0001;
     n=1;
     s=1+pow(3*x,2)+5/2*pow(x,4)+7/3*pow(x,6);
     printf("ЙНННННННННННЛНННННННННЛННННН»\n");
     printf("єkolichestvoєslagaemoeєsummaє\n");
     printf("МНННННННННННОНННННННННОННННН№\n");
     printf("є    %d      є",n);printf("   %1.2f  є",s); printf("%1.2f є\n",s);
     do
      {
       n=n+1;
       a=((2*n+1)/n)*pow(x,2*n);
       s=s+a;
       printf("є    %d      є",n);printf("   %1.2f  є",a); printf("%1.2f є\n",s);
      } while(a<e);
     printf("ИНННННННННННКНННННННННКНННННј\n");
     printf("n=%d\n",n);
     printf("summa=%1.2f",s);
     getch();
     break;
    }
   case 3:
    {clrscr();
     x=0.2;
     h=0.1;
     e=0.0001;
     printf("ЙННННЛНННННЛННННН»\n");
     printf("є n  є  x  є  s  є\n");
     printf("МННННОНННННОННННН№\n");
     while (x<=0.7)
      {n=1;
       s=1+pow(3*x,2)+5/2*pow(x,4)+7/3*pow(x,6);
       printf("є  %d є",n);printf(" %1.1f є",x); printf(" %1.2fє\n",s);
       do
	{n=n+1;
	 a=((2*n+1)/n)*pow(x,2*n);
	 s=s+a;
	 printf("є  %d є",n);printf(" %1.1f є",a); printf(" %1.2fє\n",s);
	} while (a<e);
       x=x+h;
      }
     printf("ИННННКНННННКНННННј\n");
     getch();
     break;
    }
   }
  }
}
отдельно все 3 программы работают так, как нужно, а когда вот так объеденяешь их с помощью оператора switch выдает абсолютно непонятные решения (можете проверить на своем компиляторе, у меня TC++ 3.0). почему так происходит? что сделать, чтобы решения были коректными?
P.S.думаю, ясно, что ИННННКНННННКНННННј и тому подобное это таблицы) они не так важны.
gylayko вне форума Ответить с цитированием
Старый 12.03.2012, 18:03   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Код:
   case 1:
    {clrscr();
     s=1+pow(3*x,2)+5/x*pow(x,4)+7/3*pow(x,6);
     x=0.3;
     for (n=1;n<6;n++)
      {a=(2*n+1)/n*pow(x,2*n);
       n=n+1;
       s=s+a;
      }
     printf("summa=%1.1f",s);
     getch();
     break;
    }
x вы ещё не ввели... так что там будет неизвестно какое значение... и считаете s..
во втором
Код:
 a=((2*n+1)/n)*pow(x,2*n);
у а тип целочисленный... так что будет округлять до целых... + а у вас на вводе выбора меню.. что не есть хорошо.. так же и в третьем...
в целом порекомендовал бы проверить где какая переменная используется и какой тип данных... не скупитесь в данном случае на переменные...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 12.03.2012, 18:19   #3
gylayko
Форумчанин
 
Регистрация: 14.09.2011
Сообщений: 203
По умолчанию

спасибо огромное! заменил переменную а на другую в switch и все отлично заработало!
gylayko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Switch в C++ Inv1s Visual C++ 2 28.01.2012 14:37
switch G. J. Cezar Общие вопросы C/C++ 2 16.10.2010 14:06
switch ололошенько Общие вопросы C/C++ 24 30.09.2010 16:52
switch Артэс Общие вопросы C/C++ 40 29.05.2010 20:11
switch Dimarik Общие вопросы C/C++ 4 11.04.2010 15:56