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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2015, 11:12   #1
Happy-
Новичок
Джуниор
 
Регистрация: 13.10.2015
Сообщений: 2
Смех Ошибка в программе на C#

Вычислить и вывести на экран в виде таблицы значения функции, заданной графически на интервале от 𝑥нач. до 𝑥кон.с шагом dx. Интервал и шаг задать таким образом, чтобы проверить все ветви программы. Таблицу снабдить заголовком и шапкой.

вот моя прога, но в ней ошибка в формуле ( помогите найти

Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

float circle (float x0, float y0, float r,float x)
{

    float sin_a=0.0, cos_a=0.0;

    cos_a= (x - x0) / r;
    sin_a= sqrt(1 - pow(cos_a,2));

    return (y0 + (r * sin_a) );
}
float line(float x1, float y1, float x2, float y2, float x)
{
    return ( ( ( (x - x1) * (y2 - y1) ) / (x2 - x1) ) + y1);
}

float SearchErr()
{
    float x = 0;
    float def = 0;

    rewind( stdin );
    def = scanf("%f",&x);
    if(!def)
    {
        printf("It's not a float value. Please try again.\n");
        SearchErr();
    }
    return(x);
}

TableString(float x,float y, float z1, float z2, float f, float g,float k)
{
    printf("%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f%-8.1f\n",x,y,z1,z2,f,g,k);
}

main()
{
    int def = 0;
    float x1 = 0;
    float x2 = 0;
    float dx = 0;
    float r1 = 0, r2=0 ;
    float x = 0;

    start:
        printf("Start working -1\n");
        printf("Exit. - 2\n");

        rewind( stdin );
        scanf("%i", &def);
        switch(def)
        {
        case 1:
            {
                goto print1;
                break;
            }
        case 2:
            {
                exit(0);
            }
        default:
            {
                printf("It's not a right value. Please try again.\n");
                goto start;
                break;
            }
        }

    print1:
        printf("Enter R1 value: ");
        r1 = SearchErr();
        if(r1<3)
        {
            printf("Please enter abs value!\n");
            goto print1;
        }
    print2:
        printf("Enter R2 value: ");
        r2 = SearchErr();
        if(r2<0 || r2>6)
        {
            printf("Please enter abs value!\n");
            goto print2;
        }
    writex:
        printf("\nEnter [x1;x2]:\n");
        x1 = SearchErr();
        x2 = SearchErr();
        if((x2>9)||(x1<-9)||(x2<x1))
        {
            printf("Error. Rewrite [x1;x2]");
            goto writex;
        }

    change_dx:
        printf("Enter dx: ");
        dx = SearchErr();
        if(dx <= 0)
        {
            printf("Please enter abs value, there dx > 0!\n");
            goto change_dx;
        }

        printf("\n\n\n\t\tGreat Table\n");
        printf("\nx1\tx2\tr1\tr2\tdx\tx\tf(x)\n\n");

        x = x1;
        while(x <= x2)
        {
            float f = 0;

            if((x>=(-9))&&(x<=(-6)))
            {
                f = circle(-6,0,r1,x);
                TableString(x1,x2,r1,r2,dx,x,f);
            }
            if((x>(-6))&&(x<=-3))
            {
                f = line(-6,-r1,-r2,0,x);
                TableString(x1,x2,r1,r2,dx,x,f);

            }
            if((x>3)&&(x<=0))
            {
                f = circle(0,0,r2,x);
                TableString(x1,x2,r1,r2,dx,x,f);
            }
            if((x>0)&&(x<=3))
            {
                f = line(0,r2,3,0,x);
                TableString(x1,x2,r1,r2,dx,x,f);
            }
               if((x>3)&&(x<=9))
            {
                f = line(3,0,9,r2,x);
                TableString(x1,x2,r1,r2,dx,x,f);
            }
            x += dx;
        }
    End:
        printf("\n\nTry again - 1\n");
        printf("Exit - 2\n\n");
        printf("Change dx: - 3\n");

        scanf("%i",&def);

        switch(def)
        {
            case 1:
                {
                    goto print1;
                    break;
                }
            case 2:
                {
                    exit(0);
                    break;
                }
            case 3:
                {
                    goto change_dx;
                    break;
                }
            default:
                {
                    printf("Please, try again.\n");
                    goto End;

                }

        }







}
И если у кого-то есть время, можете переписать эту прогу без goto буду очень благодарен
Изображения
Тип файла: jpg Снимок экрана 2015-10-13 в 16.43.57.jpg (19.4 Кб, 138 просмотров)
Happy- вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в программе на Си dimalinho Помощь студентам 3 09.11.2014 18:15
Ошибка в программе AliveHeaven Помощь студентам 11 11.11.2012 02:37
Ошибка в программе Катакомба Помощь студентам 8 14.10.2011 18:11
Ошибка в программе T@tali Паскаль, Turbo Pascal, PascalABC.NET 4 28.02.2011 10:32
Ошибка в программе Vladislav514 Софт 0 13.07.2010 15:16