Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Написать программу в С (http://www.tehnari.ru/f41/t94844/)

vitjok 26.02.2014 07:08

Написать программу в С
 
добрый день есть код который написал на паскале, но мне его нужно в си,
кто может помочь переписать? у самого не получается, на циклах застреваю
Код:

Var
 X,Y:Real;
Begin
 Writeln('To quit the program type -10 az X');
 Repeat
  Repeat
  Write('X= ');
  Readln(X);
  If (X<0) and (X<>-10) then Writeln('X out of range: negatives are forbidden!');
  Until (X>=0) or (X=-10);
  If X>4 then
  Repeat
    X:=X-4;
  Until X<=4;
  If X<>-10 then
  begin
    If X<1 then
    Y:=Sqrt(1-Sqr(X-1)) else
    If (X>=1) and (X<3) then
    Y:=1-Sqrt(1-Sqr(X-2)) else
    Y:=Sqrt(1-Sqr(X-3));
    Writeln('Y= ',Y:0:3);
  end;
 Until X=-10;
End.


Vladimir_S 26.02.2014 10:17

Цитата:

Сообщение от vitjok (Сообщение 1009221)
у самого не получается, на циклах застреваю

Да в чем проблема-то конкретно? Вместо
Repeat <тело цикла> Until <условие>
ставите
do {<тело цикла>} while <антиусловие>
то есть если в Паскале условие
X<=4,
то в СИ (если я правильно понимаю) будет
X>4
Ну и т.д.

vitjok 26.02.2014 17:06

я знаю, но вся проблема и остается в цикле он у меня не идет до конца, и на нем падает

Vladimir_S 26.02.2014 17:12

Цитата:

Сообщение от vitjok (Сообщение 1009372)
я знаю, но вся проблема и остается в цикле он у меня не идет до конца, и на нем падает

Так выложите программу - пусть наши СИшники посмотрят, может быть чего-нибудь и заметят.

vitjok 26.02.2014 17:42

да более вероятно то что, просто неправильно написал
Код:

#include <stdio.h>                       
#include <conio.h>
#include <math.h>

int main()
{
    float x, y;

    prinf("\nx=");
    scanf("%f",&x);

    do
    {

        if (x>4)
        do
        {
          x=x-4;
          while (x>4);
          if (x!=10)
          if (x<1)
            y=sqrt(1-sqr(x-1));
          else
            if (x>=1 && x<3)
            y=1-sqrt(1-sqr(x-2));
            else
            y=sqrt(1-sqr(x-3));
            printf("\ny=%g",y);

        }

    }
}


Vladimir_S 26.02.2014 20:54

Цитата:

Сообщение от vitjok (Сообщение 1009380)
да более вероятно то что, просто неправильно написал

Вероятность сего приближается к достоверности.
Извините, я в СИ - ни бельмеса. То есть просто совсем. И тем не менее, на мой взгляд, должно быть что-то в таком роде:
Код:

#include <stdio.h>           
#include <conio.h>
#include <math.h>

int main()
{
    float x, y;
do
{
    prinf("\nx=");
    scanf("%f",&x);
    if (x>4)
    do
    {
    x=x-4;
    }
    while (x>4);
               
    if (x!=-10)          ИМЕННО -10, а не 10!!!!
    {
      if (x<1)
      y=sqrt(1-sqr(x-1));
      else
      if (x>=1 && x<3)
      y=1-sqrt(1-sqr(x-2));
      else
      y=sqrt(1-sqr(x-3));
      }
      printf("\ny=%g",y);

        }

    }
  while (x!=-10)


vitjok 27.02.2014 04:46

спасибо Добрый Человек)) может кому пригодиться
вот рабочая прога

Код:

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
int main ()
{
float x, y;
printf("\nx=  ");
scanf("%f", &x);
if (x<0 && x != -10)
{
    printf("\nX out of range: negatives are forbidden!");
}
if (x>4)
{
  do
  {
      x=x-4;
  }while (x>=4);

if (x != -10)
{
    if (x<1)
    {
        y = sqrt(1 - pow(x-1, 2));
    }else{
          if (x>=1 && x<3)
          {
            y = 1 - sqrt(1 - pow(x-2, 2));
          }else{
            y = sqrt(1 - pow(x-3, 2));
          }
    }
}
printf("\ny= %.2f",y);
_getch();
return 0;
}



Часовой пояс GMT +4, время: 10:52.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.