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

Доходит до функции и дальше не идет - C++

Восстановить пароль Регистрация
 
sunnysunny
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 11
28.05.2009, 01:28     Доходит до функции и дальше не идет #1
Помогите
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
#include <clx.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
float stepen (int i, float p);
int fact (int i);
//---------------------------------------------------------------------------
 
#pragma argsused
float  a, m, N, p, r, t, T, Rs, Ts, r1;
float ch, zn, p1, p2, Po; // ch-chislitel', zn-znamenatel/, p1=1+p/1!+p^2/2!+...+p^n/n!, p2=p^(n+1)/n!(n-p)
int n, i, sum;
int main(void)
{
        printf ("Vvedite chislo kanalov, no nebol'she 6: ");     // okna kass
                scanf ("%f", &n);
if (n<1&&n>6)
{
printf ("Vy vveli nevernoe chislo!: ");
}
else
{
        printf("Vvedite intensivnost` vxodiaschego potoka: ");
                scanf("%f", &a);
        printf("Vvedite srendee vremya obslyjivaniya odnoj zajavki(v minutah): ");
                scanf("%f", &t);
        m=1/t;
                printf("Intensivnost' potoka obsluzivanija (chel/min): %f\n", m);
        p=a/m;
                printf("Intesivnost` nagryzki: %f\n", p);
        N=p;
                printf("Srednee chislo zanjatyx kassirov: %f\n", N);    // chislo zanjatyx kanalov
 sum=0;
 for (int i=1; i<(n+1); i++)
 {
   sum=sum+(stepen(i,p)/fact(i));
 }
 Po=1.0/(1+sum+(stepen(n+1,p)/(fact(n)*(n-p))));
                printf ("Verojatnost' otsutstvija zajavok v sisteme=%5.4f", Po); // verojatnost', chto vse kassiry svobodny
 r=stepen(n+1,p)/(fact(n-1)*(n-p)*(n-p))*Po;
               printf ("Srednee chislo passagirov v ocheredi: %f\n", r);
        Rs=N+r;
               printf ("Srednee chislo passagirov u kass: %f\n", Rs);    // srednee chislo zajavok v sisteme
        T=r/a;
               printf ("Srednee vremja, kotoroe passagir provodit v ocheredi: %f\n", T);
        Ts=Rs/a;
               printf ("Srednee vremja, kotoroe passagir tratit na priobretenie zhetona: %f\n", Ts);  // srednee vremja zajavki v sisteme
}
        getch();
        return 0;
}
float stepen (int i, float p)
{
float pr=1;
for (int k=0; k<i; k++)
pr=pr*p;
}
 
int fact (int i)
{
int f=1;
for (int k=0; k<i; k++)
f=f*(k+1);
}
Добавлено через 33 секунды
это система массового обслуживания
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2009, 01:28     Доходит до функции и дальше не идет
Посмотрите здесь:

дальше - через enter C++
Что дальше? C++
C++ с++ и что дальше
Что учить дальше? C++
C++ как остановить ввод, когда text[i] доходит до маркера?
Что дальше? C++
Что дальше C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
28.05.2009, 04:35     Доходит до функции и дальше не идет #2
Строка 17 измени scanf ("%f", &n); на scanf ("%d", &n);
После 57 строки вставь return pr;
После 64 строки вставь return f;
sunnysunny
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 11
28.05.2009, 12:26  [ТС]     Доходит до функции и дальше не идет #3
спсб, но ошибка теперь на 37 строке(((
что делать?

Добавлено через 30 секунд
kazak, спсб, но ошибка теперь на 37 строке(((
что делать?
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
28.05.2009, 12:29     Доходит до функции и дальше не идет #4
Поправь так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
float stepen (int i, float p)
{
    float pr = 1;
    for (int k = 0; k < i; k++)
        pr *= p;
    return pr;//забыл
}
 
int fact (int i)
{
    int f = 1;
    for (int k = 0; k < i; k++)
        f *= (k+1);
    return f;//забыл
}
sunnysunny
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 11
28.05.2009, 12:35  [ТС]     Доходит до функции и дальше не идет #5
подставила, но ничего не изменилось, ругается на 37 строку, и с 30 выдает нули в ответе(((
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
28.05.2009, 12:39     Доходит до функции и дальше не идет #6
Цитата Сообщение от sunnysunny Посмотреть сообщение
ругается на 37 строку
я бы тоже руглся... во первых, у вас функция степень возвращает вещественное число..а перменная sum - целочисленная
sunnysunny
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 11
28.05.2009, 12:43  [ТС]     Доходит до функции и дальше не идет #7
и что изменить?? подскажите
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
28.05.2009, 12:45     Доходит до функции и дальше не идет #8
sunnysunny, ты все исправила, что я писал?
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
28.05.2009, 12:45     Доходит до функции и дальше не идет #9
вот этот код работает у меня более менее корректно... надеюсь, вы в расчетах там не ошиблись.
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
#include <stdio.h>
#include <conio.h>
 
float stepen (int i, float p);
int fact (int i);
 
float  a, m, N, p, r, t, T, Rs, Ts, r1, sum;
float ch, zn, p1, p2, Po; // ch-chislitel', zn-znamenatel/, p1=1+p/1!+p^2/2!+...+p^n/n!, p2=p^(n+1)/n!(n-p)
int n, i;
 
int main(void)
{
   printf ("Vvedite chislo kanalov, no nebol'she 6: ");     // okna kass
   scanf ("%f", &n);
 
   if (n<1&&n>6)
   {
      printf ("Vy vveli nevernoe chislo!: ");
   }
   else
   {
      printf("Vvedite intensivnost` vxodiaschego potoka: ");
         scanf("%f", &a);
      printf("Vvedite srendee vremya obslyjivaniya odnoj zajavki(v minutah): ");
         scanf("%f", &t);
      m=1/t;
      printf("Intensivnost' potoka obsluzivanija (chel/min): %f\n", m);
      p=a/m;
      printf("Intesivnost` nagryzki: %f\n", p);
      N=p;
      printf("Srednee chislo zanjatyx kassirov: %f\n", N);    // chislo zanjatyx kanalov
      sum=0;
 
      for (int i=1; i<(n+1); i++)
         sum+=(stepen(i,p)/fact(i));
 
      Po=1.0/(1+sum+(stepen(n+1,p)/(fact(n)*(n-p))));
      printf ("Verojatnost' otsutstvija zajavok v sisteme=%5.4f", Po); // verojatnost', chto vse kassiry svobodny
      r=stepen(n+1,p)/(fact(n-1)*(n-p)*(n-p))*Po;
      printf ("Srednee chislo passagirov v ocheredi: %f\n", r);
      Rs=N+r;
      printf ("Srednee chislo passagirov u kass: %f\n", Rs);    // srednee chislo zajavok v sisteme
      T=r/a;
      printf ("Srednee vremja, kotoroe passagir provodit v ocheredi: %f\n", T);
      Ts=Rs/a;
      printf ("Srednee vremja, kotoroe passagir tratit na priobretenie zhetona: %f\n", Ts);  // srednee vremja zajavki v sisteme
   }
   getch();
   return 0;
}
 
float stepen (int i, float p)
{
   float pr=1;
   for (int k=0; k<i; k++)
      pr*=p;
   return pr;
}
 
int fact (int i)
{
   int f=1;
   for (int k=1; k<=i; k++)
      f*=k;
   return f;
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
28.05.2009, 12:51     Доходит до функции и дальше не идет #10
Monte-Cristo, а этот код точно работает?
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
C++
1
2
3
4
5
6
[U]int n[/U], i;
*
int main(void)
{
* *printf ("Vvedite chislo kanalov, no nebol'she 6: "); * * // okna kass
* *scanf ([U]"%f", &n[/U]);
sunnysunny
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 11
28.05.2009, 12:53  [ТС]     Доходит до функции и дальше не идет #11
а чего в 64 f*=k??? разве не к+1
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
28.05.2009, 12:54     Доходит до функции и дальше не идет #12
угу...Visual C++ 2008 компилиуерт...и результаты дробные выдает... но я мельком токо посмотрел... может результаты и некорректные.
sunnysunny
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 11
28.05.2009, 12:56  [ТС]     Доходит до функции и дальше не идет #13
и высчитывает до 33 строки, а дальше все равно нет

Добавлено через 1 минуту 7 секунд
не нравится эта 37 строка и все(((
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
28.05.2009, 12:59     Доходит до функции и дальше не идет #14
ну я там цикл изменил.... посмотрите внимательней..так просто читабельней и наглядней...

Добавлено через 1 минуту 57 секунд
sunnysunny, что выписывает? какой у вас компилятор?
sunnysunny
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 11
28.05.2009, 13:01  [ТС]     Доходит до функции и дальше не идет #15
С++ builder(
sunnysunny
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 11
28.05.2009, 13:04  [ТС]     Доходит до функции и дальше не идет #16
ну вот посмотрите
Вложения
Тип файла: doc Doc1.doc (128.5 Кб, 15 просмотров)
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
28.05.2009, 13:14     Доходит до функции и дальше не идет #17
C++
1
2
3
4
5
6
7
8
9
10
11
int n, i;// объявление "каналов" как int
 
int main(void)
{
   printf ("Vvedite chislo kanalov, no nebol'she 6: ");     // okna kass
   scanf ("%f", &n);// попытка считать в переменную тип int значение типа float, у меня в билдере эта попытка 
//проваливается и переменная n продолжает содержать всякий мусор(1073741824 у меня)
// далее следует такой код
for (int i=1; i<(n+1); i++)
   sum+=(stepen(i,p)/fact(i));// при попытке вычислить fact(34) происходит переполнение и fact возвращает нуль, 
//что вызывает ошибку
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2009, 13:48     Доходит до функции и дальше не идет
Еще ссылки по теме:

C++ Выполнение кода не доходит до определенной строки
Куда дальше ? C++
C++ Куда двигаться дальше?
Куда дальше? C++
C++ Что дальше

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
sunnysunny
0 / 0 / 0
Регистрация: 28.05.2009
Сообщений: 11
28.05.2009, 13:48  [ТС]     Доходит до функции и дальше не идет #18
вроде пошло))

Добавлено через 1 минуту 8 секунд
for (i=1; i<(n+1); i++)
{
sum+=(stepen(i,p)/fact(i));
}

теперь не могу разобраться с float u int((( запуталась((

Добавлено через 53 секунды
а может кто-нить помочь блок-схему составить???
Yandex
Объявления
28.05.2009, 13:48     Доходит до функции и дальше не идет
Ответ Создать тему
Опции темы

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