Forum ::BIOTECHNOLOGIA:: Strona Główna ::BIOTECHNOLOGIA::
Forum studentów kierunku biotechnologia Politechniki Śląskiej
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Informatyka - zadania z listy nr 7

 
To forum jest zablokowane, nie możesz pisać dodawać ani zmieniać na nim czegokolwiek   Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi    Forum ::BIOTECHNOLOGIA:: Strona Główna -> Archiwum
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
kot-niepłot




Dołączył: 29 Lis 2005
Posty: 324
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Gliwice BioAut

PostWysłany: Śro 14:36, 13 Gru 2006    Temat postu: Informatyka - zadania z listy nr 7

Macie: Razz
1:
Kod:

#include <stdio.h>
#include <stdlib.h>

/*    | a b |
    | c d |
 */

double def(a, b, c, d)
   double a, b, c, d;
{
   return (a*d-c*b);
}

/* C++ się różni sposobem deklarowania argumentów:

double def(double a, double b, double, c, double d)
{ ... }

*/
int main()
{
/*
    _/ A1x + B1y = C1
    \ A2x + B2y = C2
 */
   double A1, B1, C1, A2, B2, C2;
   double W, Wx, Wy;
   printf("\tA1x + B1y = C1\n\tA2x + B2y = C2\n");   
   printf("Podaj kolejne wspolczynniki: A1, B1, C1, A2, B2, C2: \n");
   scanf("%lf %lf %lf %lf %lf %lf", &A1, &B1, &C1, &A2, &B2, &C2);

   W = def(A1, B1, A2, B2);
   Wx = def(C1, B1, C2, B2);
   Wy = def(A1, C1, A2, C2);

   if(W==0)
   {   if(Wx==0 && Wy==0)
         printf("Uklad rownan nieoznaczony\n");
      else   printf("Uklad rownan sprzeczny\n");
   }
   else   printf(" x = %g\n y = %g\n", Wx/W, Wy/W);
   
   
   
   printf("\n");
   system("PAUSE");
   return (0);
}

2:
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double f(x,y)   int x, y;
{
   if(x<y)      return 2.0*x+2.0*y;
   if(x==y)   return 3.0;
   if(x>y)      return ((double)x*x - sin(y));
   return 0.666;   /* czyli jakiś błąd */
}
int main()
{

   double y=0;
   int dx, dy, Np, Nk, x0, y0, i;
   
   printf("Np: ");   scanf("%ud", &Np);
   printf("Nk: ");   scanf("%ud", &Nk);
   printf("x0: ");   scanf("%ud", &x0);
   printf("y0: ");   scanf("%ud", &y0);
   printf("dx: ");   scanf("%ud", &dx);
   printf("dy: ");   scanf("%ud", &dy);
   for(i=Np; i<=Nk; i++)
      y += f(x0+i*dx, y0-i*dy);

   printf("y = %g\n", y);


   printf("\n");
   system("PAUSE");
   return 0;
}

3:
Kod:
#include <stdio.h>
#include <stdlib.h>

void wypisz(xp, xk, dx)
   double xp, xk, dx;
{
   while(xp <= xk+0.1*dx)
   {   
      printf("%g\t", xp);
      xp += dx;
   }
   return;
}

int main()
{

   double xp, xk, dx;

   printf("xp: ");   scanf("%lf", &xp);
   printf("xk: ");   scanf("%lf", &xk);
   printf("dx: ");   scanf("%lf", &dx);
   wypisz(xp, xk, dx);
/* Uwaga: te zmienne nazywają się przypadkowo tak samo jak w funkcji
 * (bo tak mi wygodniej) - oczywiście nie muszą się tak samo nazywać, to są
 * różne zmienne */

   printf("\n");
   system("PAUSE");
   return 0;
}

4:
Kod:
/* Dwa sposoby oddawania wielu parametrów
   Trzeci (not included) to przez strukturę - to już dla smakoszy ;) */
#include <stdio.h>
#include <stdlib.h>

double p, q;

int pik_global(a,b,c)
   double a,b,c;
{
   if(a==0)
      return 1;
   p = -b/(2*a);
   q = (b*b-4*a*c)/(4*a);

   return 0;
}


int pik_pointer(a,b,c,p,q)
   double a, b, c; /* zmienna globalna się zasłania */
   double *p, *q;   /* i z niej nie korzystamy */
{
   if(a==0)
      return 1;   /* Nie parabola */
   else
   {   *p = -b/(2*a);
      *q = (b*b-4*a*c)/(4*a);
   }
   return 0;      /* Dobrze obliczone */
}


int main()
{

   double a, b, c, pp, qp;

   printf("a: ");   scanf("%lf", &a);
   printf("b: ");   scanf("%lf", &b);
   printf("c: ");   scanf("%lf", &c);

   if(pik_global(a,b,c)==1)
      printf("To nie jest parabola\n");
     else   /* Mamy obliczone globalne p i g */
      printf("Wierzcholek w (%g, %g)\n", p, q);

   if(pik_pointer(a, b, c, &pp, &qp)==1)
      printf("To nie jest parabola\n");
   else   /* Mamy p i q obliczone w pp i qp */
       printf("Wierzcholek w (%g, %g)\n", pp, qp);


   printf("\n");
   system("PAUSE");
   return 0;
}


Resztę dopiszę trochę później.
To jest napisane w C i żeby się poprawnie skompilowało należy zapisać plik z rozszerzeniem .c
W zadaniu 1 opisałem w zasadzie jedyną istotną różnicę.


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
aga86




Dołączył: 25 Lis 2005
Posty: 17
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Gliwice BioIS/1

PostWysłany: Śro 20:42, 13 Gru 2006    Temat postu:

czy w zad 2 zadeklarwane zmienne x0 y0 dx dy nie powinny byc jako float? przynajmniej tak przeczytalam w zadaniu... czy jednak to nie ma znaczenia

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
kot-niepłot




Dołączył: 29 Lis 2005
Posty: 324
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Gliwice BioAut

PostWysłany: Śro 21:57, 13 Gru 2006    Temat postu:

faktycznie, nie dostrzegłem Wink

W takim razie funkcja f() teżmusi przyjmować floata (albo double w moim przypadku)


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
kot-niepłot




Dołączył: 29 Lis 2005
Posty: 324
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Gliwice BioAut

PostWysłany: Śro 23:04, 13 Gru 2006    Temat postu:

Reszta, tym razem po ludzku, jako c++
5:
Kod:
#include <stdio.h>
#include <stdlib.h>

double pot(double x, unsigned int p)
   double x;
   unsigned int p;
{
   unsigned int i;
   double new_x=1;
   for(i=0; i<p; i++)
        new_x *= x;
   return new_x;
/* przypadku 0^0 nie rozpatrujemy */
}




int main()
{
   double x;
   unsigned int p;
   puts("Jak chcesz zakonczyc, wpisz za p 0\n");
   while(p!=0)
   {   printf("rzeczywiste x:\t"); scanf("%lf", &x);
      printf("naturalne p:\t");   scanf("%ud", &p);
      printf("x^p = %g\n\n", pot(x, p));
   }

   return 0;
}

6:
Kod:
/* silnia - sztandarowy przykład rekurencji */
/* Działa poprawnie dla max 20! */
#include <iostream>
#include <stdlib.h>

unsigned long long silnia(unsigned long long x)
{
   return x<2 ? 1 : x*silnia(x-1);
}


int main()
{
   unsigned long long n;
   int zero_raz=0;
   cout << "Jak chcesz zakonczyc, wpisz dwa razy pod rzad 0 :P\n" << endl;
   do
   {
       cin >> n;
          if(n==0) zero_raz++;
          else zero_raz=0;
      cout << n << "! = " << silnia(n) << endl;
   }
   while(zero_raz!=2);

   return 0;
}

7:
Kod:
#include <stdlib.h>
#include <math.h>

double pot(double x, unsigned int p)
{
   unsigned int i;
   double new_x=1;
   for(i=0; i<p; i++)
        new_x *= x;
   return new_x;
}

double silnia(double x)
{
   return x<1.5 ? 1 : x*silnia(x-1);
}

double glupia_suma(unsigned int Nmax, double x)
{
   double suma=0;
   for(unsigned int i=0; i<=Nmax; i++)
      suma += pot(x, i)/silnia(i);
   return suma;
}

int main()
{
   unsigned int Nmax;
   double x;
   cout << "x rozne od 0: ";
   cin >> x;
   cout << "Nmax: ";
   cin >> Nmax;
   
   cout << "e^x  = " << exp(x) << endl;
   cout << "suma = " << glupia_suma(Nmax, x) << endl;
   
   cout << endl;
    system("pause");
   return 0;
}


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
To forum jest zablokowane, nie możesz pisać dodawać ani zmieniać na nim czegokolwiek   Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi    Forum ::BIOTECHNOLOGIA:: Strona Główna -> Archiwum Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin