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 - Złożone struktury danych

 
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ść
Edmund




Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Chorzów Batory City, BioCh/1

PostWysłany: Nie 22:50, 12 Lis 2006    Temat postu: Informatyka - Złożone struktury danych

Już powoli szykuję zrobione zadania z najbliższego laboratorium POK "Złożone struktury danych, cz. 1." - czyli tablice.
Jak będę miał gotowe kody źródłowe razem z komentarzami (czyli najpóźniej rano we środę) - opublikuje to.
Prawdopodobnie na dniach powstanie moja własna stronka www z gotowymi zadaniami do ściągnięcia w ładnej uporządkowanej postaci.

EDIT:
Postaram się coby widoczna była data aktualizacji programu, oraz żeby był podgląd razem z kolorowaniem kodu. Ale proszę mnie nie poganiać Razz stronka jest robiona przeze mnie by się sprawdzić w programowaniu w PHP.


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 22:27, 14 Lis 2006    Temat postu:

Na gmailu zamieściłem swój komplet rozwiązań.

Jeśli ktoś nie widzi sensu, lub po prostu nie rozumie jakiejś akcji, niech pyta na gg, pw, czymkolwiek lub na forum, jeśli to istotne.


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 23:32, 14 Lis 2006    Temat postu:

geezu co wy z tym gmailem.. a jak komus sie nie chce instalowac jakiegos badziewia, albo pare razy wiecej klikac (nie wszyscy mamy łącza politechniki)? tradycyjne metody z pierwszego roku były złe? Jakoś nikt nie narzekał..

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




Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Chorzów Batory City, BioCh/1

PostWysłany: Wto 23:35, 14 Lis 2006    Temat postu:

Zad1
Kod:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//program made by Andrzej "Edmund" Kosz

int main()
{
 long int suma, i, liczby[1000], licznik[21];

 /* Stosowanie generatora liczb pseudolosowych.
 Generator liczb pseudolosowych (bo tak się nazywa fachowo te urządzonko) powinien być zainicjowany.
 Ale NIE JEST to wymagane.
 Inicjację robimy poprzez:
 srand();

 Ale zajmijmy się ważniejszą rzeczą - losowaniem.
 Losowanie liczb realizujemy poprzez funkcję:
 rand();
 Liczba pseudolosowa jest losowana z przedziału od 0 do 65535
 Żeby uzyskać wynik z dowolnego przedziału [poczatek,koniec] to losujemy w ten sposób:

 poczatek + ( rand()% ( koniec- poczatek +1 ));

 Operator % zwraca nam reszte z dzielenia przez (koniec - początek +1).
 Stosujemy to po to by losowanie zwróciło nam wynik mieszczący się od zera do
 zakresu (tzn. do różnicy pomiędzy końcem a początkiem przedziału).
 Później do tak wylosowanej liczby dodajemy początek zakresu coby "przesunąć to wszystko w górę"
 */


 srand(0);  //tutaj inicjujemy jak to mówią fachowcy "generator liczb pseudolosowych" :D

 //petla odpowiedzialna za zerowanie licznika - ponieważ jak sie nie zerowało wartości licznika to wychodziły jaja :D
 for(i=0;i<=20;i++)
 {
 licznik[i]=0;
 }

 //petla odpowiedzialna za losowanie liczb i sprawdzanie liczności każdej z nich
 for(i=0;i<=999;i++)
 {
   liczby[i] = 10+(rand()%11); //tutaj losujemy liczbe z zakresu [10,20]

   //a tutaj sprawdzamy jej liczność - tzn. kwalifikujemy ją do odpowiedniej grupy liczności
   if (liczby[i]==10) {licznik[10]++;}
   if (liczby[i]==11) {licznik[11]++;}
   if (liczby[i]==12) {licznik[12]++;}
   if (liczby[i]==13) {licznik[13]++;}
   if (liczby[i]==14) {licznik[14]++;}
   if (liczby[i]==15) {licznik[15]++;}
   if (liczby[i]==16) {licznik[16]++;}
   if (liczby[i]==17) {licznik[17]++;}
   if (liczby[i]==18) {licznik[18]++;}
   if (liczby[i]==19) {licznik[19]++;}
   if (liczby[i]==20) {licznik[20]++;}
 }

 //petla odpowiedzialna za drukowanie wyników - tzn. drukowanie wystapien liczby z zakresu [10,20]
 for(i=10;i<=20;i++)
 {
 suma+=licznik[i];
 printf("Ilosc wystapien liczby %d jest rowne= %d\n",i,licznik[i]);
 }

 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ść
Edmund




Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Chorzów Batory City, BioCh/1

PostWysłany: Wto 23:36, 14 Lis 2006    Temat postu:

Zad3
Kod:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//program made by Andrzej "Edmund" Kosz

int main()
{
 long int n, i, j;
 float wejsciowa[10][10], transponowana[10][10];
 // n to ilość wierszy oraz kolumn
 // i to numer wiersza, j to numer kolumny
 // będę się odwoływał do macierzy w ten sposób: macierz [numer_wiersza] [numer_kolumny]


 //petla do ...while wymusza na użytkowniku by n<= 10
 do{
 printf("Podaj wymiar macierzy (musi byc <=10) N= ");
 scanf("%d",&n);
 } while (n>10);

 //tutaj wczytujemy dane nasze w pętli - kolumnami
 for (j=0;j<=(n-1);j++)
 {
  for(i=0;i<=(n-1);i++)
  {
  printf("Podaj liczbe z %d kolumny i %d wiersza = ",j+1,i+1);
  scanf("%f",&wejsciowa[i][j]);
  }
 }

 //tutaj wypisujemy wierszami naszą macierz wejściową
 printf("\nMacierz nietransponowana - wejsciowa: \n");
 for (i=0;i<=(n-1);i++)
 {
 printf("\n");
  for(j=0;j<=(n-1);j++)
  {
  printf("%.2f ",wejsciowa[i][j]);
  }
 }

 //dokonujemy transpozycji macierzy - przypisujemy dla Xj,i=Xi,j
 for (i=0;i<=(n-1);i++)
 {
 printf("\n");
  for(j=0;j<=(n-1);j++)
  {
  transponowana[j][i]=wejsciowa[i][j];
  }
 }

 //tutaj wypisujemy wierszami naszą macierz transponowaną
 printf("\nMacierz transponowana: \n");
 for (i=0;i<=(n-1);i++)
 {
 printf("\n");
  for(j=0;j<=(n-1);j++)
  {
  printf("%.2f ",transponowana[i][j]);
  }
 }

 printf("\n");

 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ść
Edmund




Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Chorzów Batory City, BioCh/1

PostWysłany: Wto 23:37, 14 Lis 2006    Temat postu:

Zad4
Kod:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//program made by Andrzej "Edmund" Kosz

int main()
{
 long int n, m, i, j, max_i, max_j;
 float macierz[20][20], max;
 // m to ilośc wierszy, n to ilość kolumn
 // i to numer wiersza, j to numer kolumny
 // będę się odwoływał do macierzy w ten sposób: macierz [numer_wiersza] [numer_kolumny]


 //petla do ...while wymusza na użytkowniku by n<= 20 i m<= 20
 do{
 printf("Podaj ilosc wierszy macierzy (musi byc <=20) M= ");
 scanf("%d",&m);
 printf("Podaj ilosc kolumn macierzy (musi byc <=20) N= ");
 scanf("%d",&n);
 } while (n>20 || m>20);

 //tutaj wczytujemy dane nasze w pętli - wierszami
 for (i=0;i<=(m-1);i++)
 {
  for(j=0;j<=(n-1);j++)
  {
  printf("Podaj liczbe z %d wiersza i %d kolumny = ",i+1,j+1);
  scanf("%f",&macierz[i][j]);
  }
 }

 //tutaj wypisujemy wierszami naszą macierz
 printf("\nOto cala macierz: \n");
 for (i=0;i<=(n-1);i++)
 {
 printf("\n");
  for(j=0;j<=(m-1);j++)
  {
  printf("%.2f ",macierz[i][j]);
  }
 }

 //teraz sprawdzamy element maksymalny, ale najpierw pod dane elementu maksymalnego podajemy dane pierwszego elementu
 max_i=0;
 max_j=0;
 max=macierz[0][0];

 for (i=0;i<=(n-1);i++)
 {
 for(j=0;j<=(m-1);j++)
  {
   if(max<=macierz[i][j])
   {
   max=macierz[i][j];
   max_i=i+1;
   max_j=j+1;
   }
  }
 }
 printf("\n");
 printf("Element maksymalny jest w wierszu %d i kolumnie %d i wynosi= %f\n",max_i,max_j,max);

 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ść
Edmund




Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Chorzów Batory City, BioCh/1

PostWysłany: Wto 23:37, 14 Lis 2006    Temat postu:

Zad5
Kod:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//program made by Andrzej "Edmund" Kosz

int main()
{
 long int n, m, i, j;
 float macierz[20][20], suma;
 // m to ilośc wierszy, n to ilość kolumn
 // i to numer wiersza, j to numer kolumny
 // będę się odwoływał do macierzy w ten sposób: macierz [numer_wiersza] [numer_kolumny]


 //petla do ...while wymusza na użytkowniku by n<= 20 i m<= 20
 do{
 printf("Podaj ilosc wierszy macierzy (musi byc <=20) M= ");
 scanf("%d",&m);
 printf("Podaj ilosc kolumn macierzy (musi byc <=20) N= ");
 scanf("%d",&n);
 } while (n>20 || m>20);

 //tutaj wczytujemy dane nasze w pętli - wierszami
 for (i=0;i<=(m-1);i++)
 {
  for(j=0;j<=(n-1);j++)
  {
  printf("Podaj liczbe z %d wiersza i %d kolumny = ",i+1,j+1);
  scanf("%f",&macierz[i][j]);
  }
 }

 //tutaj wypisujemy wierszami naszą macierz
 printf("\nOto cala macierz: \n");
 for (i=0;i<=(n-1);i++)
 {
 printf("\n");
  for(j=0;j<=(m-1);j++)
  {
  printf("%.2f ",macierz[i][j]);
  }
 }

 printf("\n");

 //tutaj sumujemy wiersze macierzy i po kolei je wypisujemy
 for (i=0;i<=(n-1);i++)
 {
 suma=0;
 for(j=0;j<=(m-1);j++)
  {
  suma+=macierz[i][j];
  }
  printf("Suma %d wiersza jest rowna= %f\n",i+1,suma);
 }

 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ść
Edmund




Dołączył: 09 Lis 2005
Posty: 387
Przeczytał: 0 tematów

Ostrzeżeń: 0/5
Skąd: Chorzów Batory City, BioCh/1

PostWysłany: Wto 23:42, 14 Lis 2006    Temat postu:

adalgrim napisał:
geezu co wy z tym gmailem..

Adam - ja nie wrzucam rzeczy na gmail'a bo mi sie nie chce instalować badziewia ;P
Rozwiązania moich zadan z infy będą na mojej własnej stronce i mam to gdzieś czy sie komuś to podoba czy nie ;P
Możecie to sobie wrzucić na gmaila jak chcecie. Mnie będzie łatwiej zrobić to na własnej stronce Very Happy


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 10:04, 15 Lis 2006    Temat postu:

Jak nie to nie. Tylko teraz się forum zaśmieca.
Po kolei wszystkie:
Kod:
#include <iostream.h>
#include <stdlib.h>
#include <time.h>

int main()
{
   srand(time(0));
   int l[11] = { 0 };
   int a;
   for(int x=0; x<1000; x++)
      l[rand()%11]++;
   for(int x=0; x<11; x++)
      cout << "Ilosc wystapien " << x+10 << ":\t" << l[x] << endl;
   
   cout << endl;
   system("PAUSE");
   return 0;
}


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

int main()
{
   int N, x, y;
   int tab[10][10];   // max 10x10
   
   cout << "Podaj dodatni wymiar tablicy N: ";
   cin >> N;

   cout << "Podawaj elementy tablicy, wierszami\n";
   for(x=0; x<N; x++)
      for(y=0; y<N; y++)
         cin >> tab[x][y];

   /* Sprawdzenie symetryczności */
   int sym = 1;
   for(x=0; x<N && sym; x++)
     for(y=0; y<N; y++)
       if(tab[x][y]!=tab[y][x])
       { sym=0;
         break;
       }
   if(sym) cout << "Macierz symetryczna" << endl;
   else cout << "Macierz niesymetryczna" << endl;

   /* Sprawdzenie diagonalności */
   int diag = 1;
   for(x=0; x<N && diag; x++)
      for(y=0; y<N; y++)
         if(y!=x && tab[x][y]!=0)
         {   diag = 0;
            break;
         }
   if(diag) cout << "Macierz diagonalna" << endl;
   else cout << "Macierz niediagonalna" << endl;

   /* Sprawdzanie górnotrójkątności */
   int gt = 1;
   for(x=0; x<N && gt; x++)
      for(y=x+1; y<N; y++) // wtedy zawsze y>x
         if(tab[x][y]!=0)
         {   gt = 0;
            break;
         }
   if(gt) cout << "Macierz gornotrojkatna" << endl;
   else cout << "Macierz niegornotrojkatna" << endl;


   cout << endl;
   system("PAUSE");
   return 0;
}
Kod:
/* Jak dobrze pamiętam, to Metzger mówił że, "nie daj, Boże",
 * nie będziemy transponować macierzy */

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

int main()
{

   int t1[10][10];
//   int t2[10][10];

   int N, x, y;
   cout << "Podaj dodatni rozmiar macierzy N: ";
   cin >> N;
   
   cout << "Wpisz macierz (kolumnami)\n";

   for(x=0; x<N; x++)
      for(y=0; y<N; y++)
         cin >> t1[y][x];
   
   /* Sposób prosty, szybki, na skróty */
   cout << "Macierz pierwotna:" << endl;
   for(x=0; x<N; x++)
   {   for(y=0; y<N; y++)
         cout << t1[x][y] << " ";
      cout << endl;
   }
   cout << "Macierz transponowana:" << endl;
   for(x=0; x<N; x++)
   {   for(y=0; y<N; y++)
         cout << t1[y][x] << " ";
      cout << endl;
   }
/* Drugi sposób - faktyczne transponowanie, nie tylko na ekranie ;)
   for(x=0; x<N; x++)
      for(y=0; y<N; y++)
         t2[x][y] = t1[y][x];
 * Teraz wystarczy je wyświetlić:
    ...
      cout << t1[x][y];
   ...
      cout << t2[x][y];
*/

   cout << endl;
   system("PAUSE");
   return 0;
}
Kod:
/* Można to zrobić bez tablicy, ale potrzebna jest w zadaniu 5 */

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

int main()
{
   cout << "Podaj wymiary tablicy: ";
   int N, M, x, y, max, w=-1;
   int t[20][20];
   cin >> N >> M;

   for(x=0; x<N; x++)   // wiersze
      for(y=0; y<M; y++) // kolumny
      {   cin >> t[x][y];
         if(w==-1) max = t[x][y];
         if(t[x][y]>=max) { w = x+1; max = t[x][y]; }
      }
   cout << "Najwieksza wartosc to " << max << "\n" <<
      "Ostatnio w wierszu " << w << endl;

   cout << endl;
   system("PAUSE");
   return 0;
}
Kod:
/* Do tego zadania również nie jest potrzebna tablica 2wymiarowa, wystarczy 1 */
#include <iostream.h>
#include <stdlib.h>


int main()
{
   cout << "Podaj wymiary tablicy: ";
   int N, M, x, y;
   int t[20][20];
   cin >> N >> M; // wiersze x kolumny

   for(x=0; x<N; x++)   // wiersze
      for(y=0; y<M; y++) // kolumny
      {   cin >> t[x][y];

      }
// sumy przechowuję w 0-wym elemencie każdego rzędu
   for(x=1; x<M; x++) // !
      for(y=0; y<N; y++)
         t[y][0] += t[y][x];
   for(x=0; x<N; x++)
      cout << "Suma rzedu " << x+1 << ": " << t[x][0] << endl;
   
   cout << endl;
   system("PAUSE");
   return 0;
}
Kod:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
   srand(time(0));
   printf("Podaj wymiary tablicy: ");
   int N, M, x, y;
   float t[20][20];
   scanf("%d %d", &N, &M); // wiersze x kolumny
   printf("Wpisz tablice: \n");

   for(x=0; x<N; x++)
      t[x][0] = rand()%11;
   for(x=0; x<M; x++)
      t[0][x] = rand()%11;
   
   for(x=1; x<N; x++)   // wiersze
      for(y=1; y<M; y++) // kolumny
         t[x][y] = (t[x][y-1] + t[x-1][y])/2;
   printf("Tablica gotowa:\n");
   for(x=0; x<N; x++)
   {   for(y=0; y<M; y++)
         printf("%.1f ", t[x][y]);
      printf("\n");
   }
   printf("\n");
   system("PAUSE");
   return 0;
}


Ad Andrzej:
srand(0) zawsze zainicjuje tą samą wartością => rand() będzie zawsze dawało tą samą sekwencję. Dlatego stosuje się myk z pobieraniem czasu:
srand(time(0)). Do użycia time() trzeba załączyć time.h .
A zadanie 1 rozwiązałem dużo krócej: losowanie z przedziału <10,20> to to samo co losowanie z <0,10>, więc po prostu losuję indexy tablicy Wink


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




Dołączył: 20 Paź 2005
Posty: 845
Przeczytał: 0 tematów

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

PostWysłany: Śro 10:17, 15 Lis 2006    Temat postu:

Umieszczanie na forum czegos co moze byc przydatne to nie jest zasmiecanie.

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: Śro 11:10, 15 Lis 2006    Temat postu:

Ad generatory losowe.
[link widoczny dla zalogowanych]

Dlaczego wartości za każdym uruchomieniem programu są takie same dla srand(x), gdzie x się nie zmienia? Otóż w pliczku co podałem wyżej jest mniejwięcej opisany sposób, w jaki powstają liczby losowe. To są ciągi, którego każdy kolejny wyraz jest poprostu random=random+1,czyli każde wykonanie randomu zmienia ciąg o kolejny wyraz (wyrazy). Elektronika nie wyróżnia losowości, przypadku, a napewno nie cyfrówka. Dlatego nie ma idealnego randoma. Żeby za każdym razem było inaczej wystarczy uzależnić srand() od czasu...wtedy będą inne wartości poszczególnego wyrazu ciągu, a zatem będzie to faktycznie random, którego nie możemy przewidzieć.

Adam, z tym akurat się też spotkałem w povray'u. Random nie był randomem. Bo za każdym razem renderingu w tym samych miejscach się (płatki śniegu ukazywały). Ma to w tym znaczeniu pozytyw, że gdy robisz animacje z tysiącami klatek i zauważyłeś gdzieś błąd, to nie musisz wszystkich na nowo renderować, tylko odpowiednią klatkę. Random zawsze się tam samo zachowuje, przez to nie ma skoków. Dlatego przypuszczenia moje odnośnie tego się sprawdziły Very Happy W pascalu nie ma srand(), no jest randomize, którego jak nie zadeklarujesz będzie zmienną losową na podstawie czasu... jak jest w php, to chyba Ty lepiej wiesz.


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