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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Deirdre
0 / 0 / 0
Регистрация: 14.05.2009
Сообщений: 14
#1

Нужно переделать прогу! - C++

04.06.2009, 22:54. Просмотров 428. Ответов 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
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include<math.h>
#include<stdio.h>
#include<alloc.h>
#include<conio.h>
#include<stdlib.h>
void main(void)
 
{
clrscr();
textcolor(12);
textbackground(15);
int v,m,n,i,j;
C4:
clrscr();
printf("\n\n\n\n\n ???????????????????????????????????????????????");
printf("\n             ?                          Выберете один из вариантов:                                       ?");
printf("\n             ?                                                                                                                   ?");
printf("\n             ? 1- Войти в программу                                                                              ?");
printf("\n             ?                                                                                                                   ?");
printf("\n             ? 2- Помощь                                                                                                ?");
printf("\n             ?                                                                                                                   ?");
printf("\n             ? 3- Информация об авторе                                                                      ?");
printf("\n             ?                                                                                                                   ?");
printf("\n             ? 4- Выход                                                                                                   ?");
printf("\n             ?                                                                                                                   ?");
printf("\n             ???????????????????????????????????????????????\n");
scanf("%d",&v);
    switch(v)
    C1 :
printf("\n Введите степень делимого A(n):");
scanf("%d",&n);
printf("Введите степень делителя B(n):");
scanf("%d",&m);
if(m>n)
      {
      printf("ERROR!!!: Степень делимого не меньше степени делителя");
      goto C1;
      }
if(m>n)
      {
      printf("ERROR!!!: Степень делимого не меньше степени делителя");
      goto C1;
      }
if((m==0)||(n==0))
      {
      printf("ERROR!!!: Степени n и m не равны нулю");
      goto C1;
      }
double *a,*b,*k;
a=(double*)calloc(n+1,sizeof(double));
      C2:
      for(i=0;i<=n;i++)
      {
      printf("\nВведите A(%d) коэффициент",i);
      scanf("%lf",&a[i]);
 
      if((i==n)&&(fabs(a[i])<=0.0001))
        {
        printf("ERROR!!!: Коэффициент при n-oй степени не равен нулю");
        goto C2;
        }
       else;
      }
 
b=(double*)calloc(n+1,sizeof(double));
      C3:
      for(i=0;i<=m;i++)
     {
     printf("\nВведите B(%d) коэффициент",i);
     scanf("%lf",&b[i]);
 
          if((i==m)&&(fabs(b[m])<=0.0001))
            {
            printf("ERROR!!!: Коэффициент при m-oй степени не равен нулю");
            goto C3;
            }
     }
 
 
k=(double*)calloc(n-m,sizeof(double));
for (j=0;j<=(n-m);j++)
   {
   k[j]=a[n-j]/b[m];
 
      for(i=0;i<=n;i++)
      {
      if(i>=(n-(m+j)))
      a[i]=(a[i]-(b[i+j-(n-m)]*k[j]));
      }
   }
   printf("\nЧАСТНОЕ:");
   printf("\n");
 
   for (i=0;i<=(n-m);i++)
 
      {
      if(i==(n-m))
      printf("(%g)",k[i]);
      else if(n-(m+i)==1)
      printf("(%g)X + ",k[i]);
      else
      printf("(%g)X^%d + ",k[i],n-(m+i));
      }
 
   printf("\n");
   printf("\nОСТАТОК:");
   printf("\n");
 
   for (i=n;i>=0;i--)
 
       {
       if(i==0)
       printf("(%g)",a[i]);
       else if (a[i]==0)
            printf(" ");
       else if(n-(m+i)==1)
       printf("(%g)X + ",a[i]);
 
       else
       printf("(%g)X^%d + ",a[i],i);
       }
int g;
C5:
printf("\nДля возврата в меню нажмите -- 1; для выхода -- 2.");
scanf("%d",&g);
if (g==1)
goto C4;
else if (g==2)
exit(0);
else goto C5;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2009, 22:54     Нужно переделать прогу!
Посмотрите здесь:

C++ Нужно написать прогу на С++
C++ Нужно подредактировать прогу
Как переделать прогу для работы с файлами C++
Нужно написать прогу(срочно) C++
нужно написать прогу со строками C++
Можно ли данную прогу переделать в справочную систему компонентов компьютерной техники?!!! C++
Как переделать прогу?? C++
переделать чаровскую прогу по строкам в string C++
Переделать прогу с паскаля в Вижуал C++
C++ Как переделать эту прогу в шаблон классов "Двусвязный список" произвольных элементов
C++ Выручайте! Нужно переделать прогу под двусвязный список.ничего не понимаю)
даны 2 последовательности в файлах, в двух разных, нужно их обьединить и отсортировать по возрастанию. Но нужно сделать прогу с помошью указателей C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AltPeople
10 / 10 / 1
Регистрация: 25.09.2008
Сообщений: 73
05.06.2009, 11:47     Нужно переделать прогу! #2
меню лучше сделать через константы пересислений, к примеру:
C++
1
enum menu (Enter, Help, Info, Exit)
а для самого тела проги использовал бы цикл:
C++
1
2
3
do{
....
}while(menu!=exit)
сам выбор меню через swich(menu)
а выброс при ошибках или продолжение через break; и continue;
YurA_280784
Заблокирован
05.06.2009, 13:09     Нужно переделать прогу! #3
Deirdre ,не метки, а без использывания оператора безусловного перехода, кто ж так пишет - метки, долго думал что ж ты хочешь))))

Вот что вышло (правда у меня VC 6.0 а не борланд поэтому alloc.h не подключается, я вкинул windows.h, ну и естественно убрал чистку экрана clrscr и цвет области, ну дело не в этом, код ниже...А Deirdre, AltPeople никаких циклов для менюхи не надо, очень просто всё организовать используя рекурсию самой функции main() а команді меню забивать в отдельніе функции, очень просто и очень удобно, вот

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <windows.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
    
void p1();
void p2();
void p3();
bool vvod_koef(int n, double *massiv, char * name);
 
 
void main(void)
{
    int v = -1;
    printf("\t\tMENU:");
    printf("\nChoose one variant: ");
    printf("\n1- Enter to program");
    printf("\n2- Help");
    printf("\n3- Autor's info");
    printf("\n4- Exit");
    printf("\r\n");
    scanf("%d",&v);
    switch(v)
    {
        case 1:p1();break;
        case 2:p2();break;
        case 3:p3();break;
        default :break;
    }
    printf("\r\n\n1 - Make new calculations\r\n");
    scanf("%d",&v);
    if(v == 1)
        main();
}
 
bool vvod_koef(int n, double *massiv, char * name)
{
    bool RetVal = true;
    int v = -1;
    printf("Vvod koefficientov %s :\r\n",name);
    for(int i = 0;i <= n; i++)
    {
        printf("%s(%d) = ",name,i);
        scanf("%lf",&massiv[i]);
        if((i==n) && (fabs(massiv[i])<=0.0001))
        {
            printf("ERROR!!!: Koefficient pri %d-oi stepeni dolzhen bit' neravni nulu\r\n",i);
            printf("1 - povtorit' vvod %s(%d)",name,i);
            scanf("%d",&v);
            if(v == 1)
                i--;
            else
            {
                RetVal = false;
                break;
            }
        }
    }
    if(!RetVal)
            printf("Oshibka vvoda koefficientov %s",name);
    return RetVal;
}
 
void p1()
{
    int m, n, i ,j;
    printf("Vvedite stepen' delimogo  A(n):\t");
    scanf("%d",&n);
    printf("Vvedite stepen' delitelya B(n):\t");
    scanf("%d",&m);
 
    if(m>n)
    {
        printf("ERROR!!!: Stepen' delimogo ne men'she stepeni delitelya");
        return;//Покидаем тело функции в случае ошибки
    }
    if((m==0)||(n==0))
    {
        printf("ERROR!!!: Stepen' n i m dolzhni bit' neravni nulu");
        return;//Покидаем тело функции в случае ошибки
    }
    double * a = (double *)calloc( n + 1,sizeof(double));
    double * b = (double *)calloc( n + 1,sizeof(double));
    double * k=  (double *)calloc( n - m,sizeof(double));
    if(vvod_koef(n, a, "A"))
    if(vvod_koef(m, b, "B"))
    {
        for ( j=0; j <=(n-m); j++)
        {
            k[j] = a[n-j]/b[m];
            for( i = 0; i <=n; i++)
            {
                if( i >= (n-(m+j)))
                    a[i] = (a[i]-(b[i+j-(n-m)]*k[j]));
            }
        }
        printf("\n\nCHASTNOE:\n");
        for (i=0;i<=(n-m);i++)
        {
            if(i==(n-m))
                printf("(%g)",k[i]);
            else 
                if(n-(m+i)==1)
                    printf("(%g)X + ",k[i]);
                else
                    printf("(%g)X^%d + ",k[i],n-(m+i));
        }
        printf("\n\nOSTATOK:\n");
        for ( i = n ;i >= 0;i--)
        {
            if(i==0)
                printf("(%g)",a[i]);
            else 
                if (a[i]==0)
                    printf(" ");
                else 
                    if(n-(m+i)==1)
                        printf("(%g)X + ",a[i]);
                    else
                        printf("(%g)X^%d + ",a[i],i);
        }
    }
//  free((void *)a);
//  free((void *)b);
//  free((void *)k);
}
 
void p2()
{
    printf("Spravka poka otsytstvyet\r\n");
}
 
void p3()
{
    printf("Info ob avtore poka otsytstvyet\r\n");
}
Миниатюры
Нужно переделать прогу!  
Yandex
Объявления
05.06.2009, 13:09     Нужно переделать прогу!
Ответ Создать тему
Опции темы

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