[C] Matematyczne ujęcie zmiennej

gblablabla
Użytkownik
Użytkownik
Posty: 420
Rejestracja: 6 lis 2010, o 20:10
Płeć: Mężczyzna
Lokalizacja: Clausthal-Zellerfeld
Podziękował: 65 razy
Pomógł: 25 razy

[C] Matematyczne ujęcie zmiennej

Post autor: gblablabla »

Witam.
Na wstępie pragnę zaznaczyć, że jestem laikiem.

Chciałbym aby program mnożył przez podany skalar wejścia liczbę \(\displaystyle{ x - a}\) (gdzie liczba \(\displaystyle{ a}\) także podawana jest na wejściu), tak żeby w odpowiedzi na wyjściu nie trzeba było zapisywać \(\displaystyle{ x}\) jako tekstu, o ile istnieje taka możliwość. Będzie mi to także potrzebne np. przy przepisaniu na kod algorytmu szukania płaszczyzny zadanej przez trzy punkty.
Bardzo prosiłbym o jakiś konkretny przykład.

Pozdrawiam
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

[C] Matematyczne ujęcie zmiennej

Post autor: miki999 »

Nie wiem jak inni, ale ja nie rozumiem, o co Ci chodzi.
gblablabla
Użytkownik
Użytkownik
Posty: 420
Rejestracja: 6 lis 2010, o 20:10
Płeć: Mężczyzna
Lokalizacja: Clausthal-Zellerfeld
Podziękował: 65 razy
Pomógł: 25 razy

[C] Matematyczne ujęcie zmiennej

Post autor: gblablabla »

Wiem, że jestem debilem programistycznym no ale...
Chodzi mi o to, żeby np. dla danych \(\displaystyle{ 7, 8}\) (zmienne s, a) dawało \(\displaystyle{ 7x - 56}\) i żeby nie trzeba było tego robić tak:

Kod: Zaznacz cały

#include<stdio.h>  //printf, scanf
#include<conio.h> //getch
#include<math.h> //sqrt

int main ()
{ int x;
  int a, s;
  scanf("%d%d", a, s);
  printf("%d*(x - %d)", s, a);
  getch();
  return 0;
}
Tu jest błąd, nie wiem jak elegancko (czyli nie jako tekst) zapisać, a potem \(\displaystyle{ s(x - a)}\) oraz co zrobić ze zmienną \(\displaystyle{ x}\), żeby wyświetlała się w wyniku jako \(\displaystyle{ x}\) i nie trzeba było tego robić tekstowo.
Ein
Użytkownik
Użytkownik
Posty: 1358
Rejestracja: 4 lip 2009, o 13:27
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 3 razy
Pomógł: 222 razy

[C] Matematyczne ujęcie zmiennej

Post autor: Ein »

Kod: Zaznacz cały

printf("%d*(x-%d)=%d*x-%d",s,a,s,s*a);
O to chodziło? Bo faktycznie kompletnie nie wiadomo, o co Ci chodzi.
gblablabla
Użytkownik
Użytkownik
Posty: 420
Rejestracja: 6 lis 2010, o 20:10
Płeć: Mężczyzna
Lokalizacja: Clausthal-Zellerfeld
Podziękował: 65 razy
Pomógł: 25 razy

[C] Matematyczne ujęcie zmiennej

Post autor: gblablabla »

Nie, chodzi mi o to, żeby wypisało gotowe wyliczone \(\displaystyle{ s(x - a)}\), np. dla \(\displaystyle{ s = 0, a = 5}\) ma być \(\displaystyle{ 0}\), dla \(\displaystyle{ s = 3, a = 3}\) ma dać \(\displaystyle{ 3x - 9}\), gdzie \(\displaystyle{ x}\) jest jakąś zmienną (nieokreśloną, nieprzyjmującą żadnej konkretnej wartości). Chodzi mi też o to, żeby w podanych przykładach wyrażenia \(\displaystyle{ 0}\) oraz \(\displaystyle{ 3x - 9}\) nie były tekstem, żebym dalej mógł je wykorzystywać.-- 10 mar 2012, o 15:08 --Tzn. niby ok, ale na tym co jest po znaku równości chcę potem pracować jako na liczbie (również dla przypadku np. \(\displaystyle{ s = 0}\)).
adambak
Użytkownik
Użytkownik
Posty: 1272
Rejestracja: 8 sty 2011, o 18:18
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 295 razy
Pomógł: 115 razy

[C] Matematyczne ujęcie zmiennej

Post autor: adambak »

z tego co rozumiem to nie ma takiej możliwości bezpośrednio.. jeśli chcesz to sobie zapewnić to powinieneś do tego podejść obiektowo.. napisać klasę (widzę, że ma być C - to trochę gorzej, ale może i być struktura) przechowującą takie wyrażenie z jakimiś metodami jego 'obsługi' - np wyliczenia wartości dla danego \(\displaystyle{ x}\).. w praktyce to wygląda tak, że struktura ma conajmniej trzy pola: \(\displaystyle{ s,x,a}\) oraz metody ustawiające wartości dla tych pól, wyliczające wartość wyrażenia dla danego \(\displaystyle{ x}\) oraz ewentualnie robiące jakieś inne operacje arytmetyczne na tejże strukturze.. na koniec metoda wypisująca uporządkowane wyrażenie w postaci tekstu.. tak ja to widzę..
gblablabla
Użytkownik
Użytkownik
Posty: 420
Rejestracja: 6 lis 2010, o 20:10
Płeć: Mężczyzna
Lokalizacja: Clausthal-Zellerfeld
Podziękował: 65 razy
Pomógł: 25 razy

[C] Matematyczne ujęcie zmiennej

Post autor: gblablabla »

adambak pisze:z tego co rozumiem to nie ma takiej możliwości bezpośrednio.. jeśli chcesz to sobie zapewnić to powinieneś do tego podejść obiektowo.. napisać klasę (widzę, że ma być C - to trochę gorzej, ale może i być struktura) przechowującą takie wyrażenie z jakimiś metodami jego 'obsługi' - np wyliczenia wartości dla danego \(\displaystyle{ x}\).. w praktyce to wygląda tak, że struktura ma conajmniej trzy pola: \(\displaystyle{ s,x,a}\)
Pola tzn.? Czy w ogóle możliwe jest uzyskanie wyniku \(\displaystyle{ s(x - a)}\) w postaci zmiennej np. int, tak żeby na niej operować? Mógłbym prosić o jakiś link / odnośnik, bo nie wiem jak się za to zabrać - moja wiedza jest za mała :p
Pozdrawiam.
adambak
Użytkownik
Użytkownik
Posty: 1272
Rejestracja: 8 sty 2011, o 18:18
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 295 razy
Pomógł: 115 razy

[C] Matematyczne ujęcie zmiennej

Post autor: adambak »

gblablabla pisze:Pola tzn.?
tzn. elementy struktury..
gblablabla pisze:Czy w ogóle możliwe jest uzyskanie wyniku \(\displaystyle{ s(x - a)}\) w postaci zmiennej np. int, tak żeby na niej operować?
nie jest możliwe, musisz sam to zaprogramować..


taki drobny przykładzik, zobaczymy czy będziesz chciał w to iść:

Kod: Zaznacz cały

#include <stdio.h>

struct Wyrazenie
{
  int s,x,a;
};

int oblicz_wartosc_wyrazenia(struct Wyrazenie wyr, int x)
{
  return wyr.s*(x-wyr.a);
}

void wypisz_wyrazenie(struct Wyrazenie wyr)
{
  printf("%d*(x-%d)", wyr.s, wyr.a);
}

int main()
{
  int x;
  struct Wyrazenie wyr;
  wyr.s=5; wyr.a=2;

  printf("Podaj x: ");
  scanf("%d", &x);
  wypisz_wyrazenie(wyr);
  printf(" = %d", oblicz_wartosc_wyrazenia(wyr, x));

  return 0;
}
z tym że bardzo się tym nie sugeruj, bo pisałem na szybko żeby tylko przekazać ideę.. nie wiem czy Ci to pasuje, ale ja tak to widzę, możesz poeksperymentować z tym, zależy co chcesz osiągnąć konkretnie w swoim problemie..
ODPOWIEDZ