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 - rozwiązania zadań z zestawu 4
Idź do strony 1, 2  Następny
 
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ść
helix




Dołączył: 30 Gru 2005
Posty: 19
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Ruda Śląska BioCh/2

PostWysłany: Nie 20:10, 29 Paź 2006    Temat postu: Informatyka - rozwiązania zadań z zestawu 4

Moglby ktos mily wrzucic tu rozwiazania do zadan z listy z instrukcjami iteracyjnymi ( zwlaszcza chodzi mi o 6, 7 i 9. Pleaseeee Very Happy

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




Dołączył: 15 Sty 2006
Posty: 1041
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: BioAut, Gleiwitz-Petersdorf

PostWysłany: Pon 8:35, 30 Paź 2006    Temat postu:

Jak będę miał czas to coś naskrobię Smile , ale nie wiem, czy Kreskówka się na mnie nie obrazi, bo wkońcu jestem zawężony... no i ...

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




Dołączył: 15 Sty 2006
Posty: 1041
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: BioAut, Gleiwitz-Petersdorf

PostWysłany: Pon 15:05, 30 Paź 2006    Temat postu:

zadanko 6
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float a,b,d, mx, mn;
float temp;

int main()
{  do{
     printf("Podaj a oraz b, ktore spelniaja warunek: a<b:   ");
     scanf("%f %f", &a, &b);}
   while (a>=b);
   do{
     printf("Podaj skok d>0:  ");
     scanf("%f",&d);}
   while (d<=0);
   for (temp=a; temp<b+d;temp+=d)
    { if (temp==a)
       { if (temp<0) mx=pow(temp,3)+1.0/temp;
         if (temp==0) mx=3*sqrt(2);
         if (temp>0) mx=pow(sin(sqrt(2)),1.0/3.0);
         mn=mx;}
      else
       { if ((temp<0)&&(pow(temp,3)+1.0/temp>mx)) mx=pow(temp,3)+1.0/temp;
         if ((temp==0)&&(3*sqrt(2)>mx)) mx=3*sqrt(2);
         if ((temp>0)&&(exp(1.0/3.0*sin(sqrt(2)))>mx)) mx=exp(1.0/3.0*sin(sqrt(2)));

         if ((temp<0) && (pow(temp,3)+1.0/temp<mn)) mn=pow(temp,3)+1.0/temp;
         if ((temp==0)&&(3*sqrt(2)<mn)) mn=3*sqrt(2);
         if ((temp>0)&&(exp(1.0/3.0*sin(sqrt(2)))<mn)) mn=exp(1.0/3.0*sin(sqrt(2)));}

         printf("\n %f, %f, %f",temp, mx, mn);
     }
   printf("\n Maksymalna wartosc wynosi: %f \n Minimalna wartosc wynosi %f\n",mx,mn);
    system("PAUSE");
      return 0;
}


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




Dołączył: 15 Sty 2006
Posty: 1041
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: BioAut, Gleiwitz-Petersdorf

PostWysłany: Pon 15:24, 30 Paź 2006    Temat postu:

zadanie 7. Coś ta rekurencja nie taka:/
Kod:
#include <math.h>

float es, y,y_1,l;


int main()
{  do
    {printf("Podaj L>=0:   ");
     scanf("%f", &l);}
   while (l<0);
   do
    {printf("Podaj e>0:   ");
     scanf("%f", &es);}
   while (es<=0);
   y=l/2.0;
   y_1=0.5*(y+l/y);
   while ((y_1-y<es) && (y_1-y>-es))
     {y=y_1;
      y_1=0.5*(y+l/y);
     }

   printf("\n Obliczona wartosc wynosi %f\n",y);
    system("PAUSE");
      return 0;
}


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
adalgrim
Starosta grupy AU (2rok)



Dołączył: 05 Lis 2005
Posty: 380
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: RAu

PostWysłany: Pon 19:30, 30 Paź 2006    Temat postu:

Ja robiłem dzisiaj...

Zadanie 6:

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

int main()
{
      float a,b,delta,y,i,z=0,suma=0,max=0,srednia;

      printf("Wprowadz wartosc poczatku przedzialu:\n");
      scanf("%f",&a);
      printf("Wprowadz wartosc konca przedzialu:\n");
      scanf("%f",&b);
      printf("Zmiana poprzez krok:\n");
      scanf("%f",&delta);

      for(i=a;i<=b;i+=delta){
      ++z;
        if(i<0){
          y=i*i*i+1.0/i;
        }
        else if(i==0){
          y=3*sqrt(2);
        }
        else if(i>0){
          y=pow((sin(sqrt(i))),1.0/3.0);
        }
        suma+=y; // suma = suma + y;
        if(z==1) max=y;
        if(y>max) max=y;
        printf("[ %f ]\n", y);
       }
       srednia = suma/z;
       printf("\nWartosc maksymalna wynosi: [ %f ]\n",max);
       printf("Wartosc srednia wynosi: [ %f ]\n",srednia);


      system("PAUSE");
      return 0;
}


Zadanie 7:
Kod:
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main()
{
      float L=0,eps=0,y2=0,y1=0,y0=0,i=1,y,a;

      printf("Wprowadz wartosc liczby ktorej pierwiastek chcesz obliczyc:\n");
      scanf("%f",&L);
      printf("Wprowadz wartosc dokladnosci:\n");
      scanf("%f",&eps);

      y0=L/2;
      y1=y0;
      do{
         if(i>1){
           y0=y;
         }
         y=1.0/2*(y0+(L/y0));
         i++;
         printf("[ poprzednio: %f  teraz: %f ]\n",y0, y);
      }while(fabs((y-y0))>eps);



     printf("Pierwiastek wynosi: %f z dokladnoscia: %f\n", y, eps);

     system("PAUSE");
     return 0;
}


Zadanie 8:
Kod:

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

int main()
{
      float i=-5,x,N,y,suma;

      printf("Wprowadz wartosc x:\n");
      scanf("%f",&x);
      printf("Wprowadz N do jakiej obliczyc sume:\n");
      scanf("%f",&N);

      for(i;i<=N;i++){
         y=pow(x,i)*sin(i*x);
         suma+=y;
         printf("[ %f ]\n",y);
      }

      printf("\nWartosc y = %f\n",suma);

      system("PAUSE");
      return 0;
}


Komentarzy nie ma, bo mi sie nie chce ich pisać Razz Oczywiście printów wewnątrz pętli zazwyczaj nie trzeba. Ja sobie je pisałem tylko w celach poglądowych na wyniki (widziałem czy robi pętla określone zadanie, jak robi i ewentualne błędy poprawiałem). Oczywiście piszę to idąc zupełnie na łatwizne Smile Czyli nie piszę pierwiastka 3 stopnia poprzez logarytm tylko pow(x,1.0/3). Szybciej, łatwiej i nie musze zapamiętywać wzorów.

Have a nice work


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




Dołączył: 15 Sty 2006
Posty: 1041
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: BioAut, Gleiwitz-Petersdorf

PostWysłany: Pon 19:38, 30 Paź 2006    Temat postu:

Zadanko 9Smile mi działa, ale czy takie mają wyjść wyniki:
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float epsilon, q, i;
int p, n;

int silnia(int x) {
    if (x == 0) {
        return 1;
    } else {
        return x * silnia(x-1);
    }
}

int main()
{  printf("Podaj liczby n, q oraz e:   ");
   scanf("%d %f %f", &n, &q, &epsilon);
   p=0;
   do
    { i=float(1.0/silnia(q))*pow(n-q,p-1)*exp(n*q);
      p++;}
   while (i<epsilon);
   printf("\n Obliczona wartosc wynosi %d \n",p);
   system("PAUSE");
      return 0;
}
Komentarzy też nie zamieszczam, bo chyba każdy sobie z tym poradzi. No może ze silnią nie, ale nie wiem czy jest w C ta funkcja. To jest funkcja rekurencyjna, tzn. Zanim się zakończy wywoła znów siebie, czyli wejdzie do siebie, a będąc w środku wejdzie znów do siebie itd... aż napotka 0 jako x (bo za każdym razem wchodzenia do siebie x-1). Gdy spotka 0 to zwraca 1 nie wchodząc w siebie i tak każde wywołanie funckcji może się zamnąć i w taki prosty sposób mamy funkcje silnia.

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
adalgrim
Starosta grupy AU (2rok)



Dołączył: 05 Lis 2005
Posty: 380
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: RAu

PostWysłany: Wto 2:12, 31 Paź 2006    Temat postu:

Silni w C chyba nie ma, ale w funkcji masz "błąd". Dla x=0 i dla x=1 wartosc silni = 1 Smile Ty obrałeś tylko jedną możliwość..

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




Dołączył: 15 Sty 2006
Posty: 1041
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: BioAut, Gleiwitz-Petersdorf

PostWysłany: Wto 9:30, 31 Paź 2006    Temat postu:

A co wychodzi jeśli dasz 1?? Bo mi wychodzi, że jeden. I dla mnie jak najbardziej to działa. Nie wiem. Sprawdzałem i działa...

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
adalgrim
Starosta grupy AU (2rok)



Dołączył: 05 Lis 2005
Posty: 380
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: RAu

PostWysłany: Wto 11:03, 31 Paź 2006    Temat postu:

zobacz na wikibooks, nie bede sie z Tobą kłócił, bo mi się nie chce tego pisać, żeby sprawdzić Razz nie mam czasu..

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




Dołączył: 15 Sty 2006
Posty: 1041
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: BioAut, Gleiwitz-Petersdorf

PostWysłany: Wto 13:09, 31 Paź 2006    Temat postu:

[link widoczny dla zalogowanych]
Kod:
int silnia (int liczba)
{
  int sil=liczba;
  if (liczba==0) return 1;
  if (liczba==1) return 1;
  sil = liczba*silnia(liczba-1);
  return sil;
}
No dobra, a teraz inaczej: [link widoczny dla zalogowanych]
Kod:
int silnia(int x) {
    if (x == 0) {
        return 1;
    } else {
        return x * silnia(x-1);
    }
}
Kod:

silnia w Pythonie:
def silnia(x):
    if x == 0:
        return 1
    else:
        return x * silnia(x-1)
Mimo, iż Python, to jest tutaj deklaracja silni w C oraz niżej w Pythonie. Tak czy inaczej działa tak samo. Jeśli nie to na wiki jest bład, więc może go poprawisz??

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: Wto 14:07, 31 Paź 2006    Temat postu:

A czy w ogóle tak trzeba kombinować?

long p=0, psilnia=1;

A potem w pętli:
{...
p++;
psilnia *= p;
...}

Krótko, czytelnie, oszczędnie pamięciowo a przede wszystkim szybko.
Tu nie potrzeba całej potężnej funkcji - jak sprawdzamy po kolei każde p od 0, to to jest najprostszy sposób. Tym bardziej że pojęcie funkcji na tym etapie umiejętności miesza innym w głowach.


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




Dołączył: 15 Sty 2006
Posty: 1041
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: BioAut, Gleiwitz-Petersdorf

PostWysłany: Wto 14:59, 31 Paź 2006    Temat postu:

jak, ale nie wiem czy to tak aż oszczędza pamięć - zalezy jaką. Jeśli załużmy, że mamy tych silni pisać sto, to chyba troche chorym pomysłem byłoby ciągle to powtarzać, no nie?

Ale z drugiej strony mam nadzieję, że każdy zrozumiał na jakiej to zasadzie działa ta funkcja oraz jak to wygląda ogólnie.

W programowaniu zetniemy się w większosci z funkcjami. Na dzień dzisiejszy chyba nie da się pisać nie używając funkcji, procedur i innych dziwactw...


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: Wto 17:28, 31 Paź 2006    Temat postu:

Postaw się w sytuacji takiego studenta biotechnologii, który o C wie tyle co z laborek i wykładów - on sobie musi radzić :>

Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
adalgrim
Starosta grupy AU (2rok)



Dołączył: 05 Lis 2005
Posty: 380
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: RAu

PostWysłany: Wto 21:14, 31 Paź 2006    Temat postu:

Kocie rzadko się z Michałem zgadzam, ale silnia przez pętle?Very Happy Jezu samobójca.. Smile a teraz weź oblicz np 10000 działań, gdzie zmienia się np x i liczy

y = x! - x^i

gdzie i = 1,2,3... 10000; Razz Nie ucz ludzi wszystkiego wrzucać w pętle, bo jak się niedługo okaże pętle wykonujemy tylko, gdy już na prawdę musimy Smile

Natomiast linki do wikibooks są na stronie kursu dostępne, więc dokopać się do silni można (ja się właśnie dokopywałem Razz). Na tym etapie wcale nie wymagana jest znajomość o co tam dokładnie chodzi, wystarczy, żeby działało Smile


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




Dołączył: 30 Gru 2005
Posty: 19
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Ruda Śląska BioCh/2

PostWysłany: Wto 21:37, 31 Paź 2006    Temat postu:

w sprawie silni bylam na konsultacjach u dr Czeczota i on mi tez poradzil zapisac silnie w petli :]

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)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
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