Autor Wiadomość
cadaver
PostWysłany: Wto 18:19, 08 Kwi 2008    Temat postu:

Kalkulator powinien gdzieś tutaj być:
http://ugame.home.pl/listy.zip
koji
PostWysłany: Pon 12:53, 08 Sty 2007    Temat postu:

moglby ktos wytlumaczyc zadanka 3 4 5 z listy nr 3 ? o co tak naprawde w nich chodzi ?
Lukasz
PostWysłany: Czw 13:44, 04 Sty 2007    Temat postu:

Lista 4 cwiczenie 3
Kod:

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

int main()
{
int i,n;

printf("Podaj wielkosc tablicy: \n");
scanf("%d",&n);

float t[n];
for(i=0;i<n;i++) {t[i]=rand(); printf("%f\n",t[i]);}


float max,min;
i=1;
if(n%2==1) max=min=t[0];
else
 {
 if(t[0]<t[1]) { min=t[0]; max=t[1]; }
 else { min=t[1]; max=t[0]; }
 i=2;
 }

for(;i<n;i+=2)
   {
   if(t[i]<t[i+1])
          {
     if(min>t[i]) min=t[i];
     if(max<t[i+1]) max=t[i+1];
          }
   else
          {
       if(max<t[i]) max=t[i];
            if(min>t[i+1]) min=t[i+1];
          }
   }

printf("Maximum: %f\nMinimum: %f\n",max,min);
return 0;
}
Lukasz
PostWysłany: Czw 12:50, 04 Sty 2007    Temat postu:

Lista 4 cwiczenie 2, przy kompilacji trzeba dodać biblioteki matematyczne, bo sie pluje kompilator Razz
Kod:

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

float mycos(float x)
   {
   float y;
   if(fabs(x)<0.1) return y=1-(x*x)/2;
   else
      {
      y=mycos(x/2);
      return 2*y*y-1;
      }
   }

int main()
{
float i=0;
do
 {
 printf("Biblioteczna: %f\n",cos(i));
 printf("Wyliczona: %f\n",mycos(i));
 i+=0.01;
 }
while(i<0.1);
return 0;
}
matt_666
PostWysłany: Czw 3:53, 04 Sty 2007    Temat postu:

nie tylko ty nie umiesz to po pierwsze,dlatego w tym temacie ja postów nie piszę...
a forum jest martwe bo nic nikt nie pisze,ja się staram jak mogę,ale sam ze sobą nie będę gadać...
yumi
PostWysłany: Śro 20:00, 03 Sty 2007    Temat postu:

Powiedzmy sobie szczerze... to forum jest martwe:-( a w szczególności widać, że wszyscy potrafią pisać w C, tylko nie ja;-) no i co ja biedna mam teraz czynić??
cadaver
PostWysłany: Sob 18:55, 23 Gru 2006    Temat postu:

A teraz coś z zupełnie innej beczki...
zad. 4.7
Kod:

#include <stdio.h>
#include <stdlib.h>
#define N 8



unsigned char X[N][N];
void skocz(unsigned short int n , unsigned char x, unsigned char y) {
   X[x][y] = n;
   
   if ( n == N*N) {
   unsigned char i,n;
         for( i = 0; i < N; i++) {
      for( n= 0; n < N; n++) {
         printf("%2.0f ",(float)X[i][n]);
         }
         printf("\n");
         }
         exit(0);
       
   }
   else {
   
   if ((x + 2 < N) && (y + 1 < N) && ( X[x + 2][y + 1] == 0))
    skocz( n + 1 , x + 2, y + 1);
       
   if ((x + 2 < N) && (y - 1 >= 0) && ( X[x + 2][y - 1] == 0))
      skocz( n + 1 , x + 2, y - 1);
   
   if ((x + 1  < N) && (y + 2 < N) && ( X[x + 1][y + 2] == 0))
      skocz( n + 1 , x + 1, y + 2);
       
   if ((x + 1 < N) && (y - 2 >= 0) && ( X[x + 1][y - 2] == 0))
      skocz( n + 1 , x + 1, y - 2);
       
   if ((x - 2 >= 0) && (y + 1 < N) && ( X[x - 2][y + 1] == 0))
      skocz( n + 1 , x - 2, y + 1);
       
   if ((x - 2 >= 0) && (y - 1 >= 0) && ( X[x - 2][y - 1] == 0))
      skocz( n + 1 , x - 2, y - 1);
       
   if ((x - 1  >= 0) && (y + 2 < N) && ( X[x - 1][y + 2] == 0))
      skocz( n + 1 , x - 1, y + 2);
       
   if ((x - 1 >= 0) && (y - 2 >= 0 ) && ( X[x - 1][y - 2] == 0))
      skocz( n + 1 , x - 1, y - 2);
   
   X[x][y] = 0;
   
       
   }
   


}

int main() {
   skocz(1, 0, 0);
   return 0;

}



OK... myslalem, ze progz powyzej bedzie dzialal szybciej, ale jako ze na wynik sie nie doczekalem(na 6x6 jeszcze jakos dziala, 8x8 juz trwa wieki) skrobnalem zoptymalizowany algorytm.
Kod:


#include <stdio.h>
#include <stdlib.h>
#define N 8

int hops=0;

int X[N][N];
int naj (int *K)
   {
int n,m,i;
   n=K[0];
   m=0;
   for( i = 1; i < 8; i++) {
      if (K[i] == 9)
         K[i] = 0;
      if ((n <= K[i])) {
         n=K[i];
         m=i;
      }
      }
   if (K[m] == 0)
   return 88;
   K[m]=0;
   return   m;
   }

 int  sprawdz (int x, int y) {
   int  i=1;
   if (!((x + 2 < N) && (y + 1 < N) && ( X[x + 2][y + 1] == 0))) {
    i++;
      }
   if (!((x + 2 < N) && (y - 1 >= 0) && ( X[x + 2][y - 1] == 0))) {
      i++;
   }
   if (!((x + 1  < N) && (y + 2 < N) && ( X[x + 1][y + 2] == 0))) {
      i++;
      }
   if (!((x + 1 < N) && (y - 2 >= 0) && ( X[x + 1][y - 2] == 0))) {
      i++;
      }
   if (!((x - 2 >= 0) && (y + 1 < N) && ( X[x - 2][y + 1] == 0))) {
      i++;
      }
   if (!((x - 2 >= 0) && (y - 1 >= 0) && ( X[x - 2][y - 1] == 0))){
      i++;
      }
   if (!((x - 1  >= 0) && (y + 2 < N) && ( X[x - 1][y + 2] == 0))) {
      i++;
      }
   if (!((x - 1 >= 0) && (y - 2 >= 0 ) && ( X[x - 1][y - 2] == 0))) {
      i++;
      }
   return i;


}
void skocz(int n , int x, int y) {
   int *K,i,j,q;
   K = calloc(8,4);
   hops++;
   X[x][y] = n;
   if ( n == N*N-1) {

         for( i = 0; i < N; i++) {
      for( j= 0; j < N; j++) {
         if(!X[i][j])
         X[i][j]=N*N;
         printf("%3.0f ",(float)X[i][j]);
         }
         printf("\n");
         }
         printf("Liczba \"zapetlen\": %d\n",hops);
         exit(0);
      
   }
   else {
   
   if ((x + 2 < N) && (y + 1 < N) && ( X[x + 2][y + 1] == 0)) {

      K[0] = sprawdz( x + 2, y + 1);
      }
      
   if ((x + 2 < N) && (y - 1 >= 0) && ( X[x + 2][y - 1] == 0))
      K[1] = sprawdz ( x + 2, y - 1);
   
   if ((x + 1  < N) && (y + 2 < N) && ( X[x + 1][y + 2] == 0))
      K[2] = sprawdz (  x + 1, y + 2);
      
   if ((x + 1 < N) && (y - 2 >= 0) && ( X[x + 1][y - 2] == 0))
      K[3] = sprawdz (  x + 1, y - 2);
      
   if ((x - 2 >= 0) && (y + 1 < N) && ( X[x - 2][y + 1] == 0))
      K[4] = sprawdz (  x - 2, y + 1);
      
   if ((x - 2 >= 0) && (y - 1 >= 0) && ( X[x - 2][y - 1] == 0))
      K[5] = sprawdz (  x - 2, y - 1);
      
   if ((x - 1  >= 0) && (y + 2 < N) && ( X[x - 1][y + 2] == 0))
      K[6] = sprawdz (  x - 1, y + 2);
      
   if ((x - 1 >= 0) && (y - 2 >= 0) && ( X[x - 1][y - 2] == 0))
      K[7] = sprawdz ( x - 1, y - 2);

   for( i = 0; i < 8; i++) {

   switch(naj(K)) {
      case 0:
      skocz( n + 1 , x + 2, y + 1);
      
      case 1:
      skocz( n + 1 , x + 2, y - 1);
   
      case 2:
      skocz( n + 1 , x + 1, y + 2);
      
      case 3:
      skocz( n + 1 , x + 1, y - 2);
      
      case 4:
      skocz( n + 1 , x - 2, y + 1);
      
      case 5:
      skocz( n + 1 , x - 2, y - 1);
      
      case 6:
      skocz( n + 1 , x - 1, y + 2);
      
      case 7:
      skocz( n + 1 , x - 1, y - 2);
      
      case 88: X[x][y] = 0;   return;
   
   }
   
   }

   
      
   }
   


}


int main() {
   int x,y;
   printf("Podaj pozycje startowa(np. 0 0): ");
   scanf("%d %d",&x,&y);
   skocz(1, x, y);
   printf("Nie ma rozw.\n");
   return 0;

}


Gość
PostWysłany: Czw 13:54, 21 Gru 2006    Temat postu:

Kod:

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

typedef struct {
   double r;
   double i;
} dcomplex;

dcomplex add(dcomplex a, dcomplex b)
   {
   dcomplex c;
   c.r=a.r+b.r;
   c.i=a.i+b.i;
   return c;
   }

dcomplex sub(dcomplex a, dcomplex b)
   {dcomplex c;
   c.r=a.r-b.r;
   c.i=a.i-b.i;
   return c;
   }

dcomplex multi(dcomplex a, dcomplex b)
   {dcomplex c;
   c.r=a.r*b.r-a.i*b.i;
   c.i=a.i*b.r+a.r*b.i;
   return c;
   }

dcomplex div(dcomplex a, dcomplex b)
   {dcomplex c;
   c.r=(a.r*a.r)/(a.r*a.r+b.r*b.r) + (b.r*b.r)/(a.r*a.r+b.r*b.r);
   c.i=(b.i*a.r)/(a.r*a.r+b.r*b.r) - (a.r*b.i)/(a.r*a.r+b.r*b.r);
   return c;
   }

dcomplex mod(dcomplex a)
   {dcomplex c;
   c.r=sqrt(a.r*a.r+a.i*a.i);
   c.i=0;
   return c;
   }

void wczytaj (dcomplex *a)
{
   printf ("Podaj Re liczby w ");
   scanf ("%lf", &(a->r));
   printf ("Podaj Im liczby w ");
   scanf ("%lf", &(a->i));
}

int main ()
{
dcomplex i, j, k, l, m, n;
wczytaj (&i);
wczytaj (&j);
wczytaj (&k);
wczytaj (&l);
wczytaj (&m);
wczytaj (&n);

dcomplex w, ww, wz,p;
w=sub(multi(i,m), multi (j,l));
ww=sub(multi(k,m), multi(n,l));
wz=sub(multi(i,k), multi(j,n));

if (w.r==0&&w.i==0)
   {
   if(ww.r==0&&ww.i==0&&wz.r==0&&wz.i==0)
      printf ("Układ równań jest nieoznaczony");
   else
      printf ("Układ równań równań jest sprzeczny");
   }
else
   printf ("Rozwiązanie tego układu to:\n");
   p=div(w,ww);
   printf ("w=%lf+%lfi\n", p.r, p.i);
   p=div(w,wz);
   printf ("z=%lf+%lfj\n", p.r, p.i);


return 0;
}
Gość
PostWysłany: Czw 13:53, 21 Gru 2006    Temat postu:

LISTA 3 ZADANIE 8 [zespolone]:
Kod:

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

typedef struct {
   double r;
   double i;
} dcomplex;

dcomplex add (dcomplex a, dcomplex b) {
   dcomplex c;
   c.r = a.r + b.r;
   c.i = a.i + b.i;
   return c;
}

dcomplex mult (dcomplex a, dcomplex b) {
   dcomplex c;
   c.r = a.r * b.r - a.i * b.i;
   c.i = a.i * b.r + a.r * b.i;
   return c;
}

dcomplex przeciwny (dcomplex a) {
   dcomplex c;
   c.r = -a.r;
   c.i = -a.i;
   return c;
}

dcomplex odwrotny (dcomplex a) {
   dcomplex c;
   c.r = a.r/(a.r*a.r + a.i*a.i);
   c.i = -a.i/(a.r*a.r + a.i*a.i);
   return c;
}

dcomplex sprzezenie (dcomplex a) {
   dcomplex c;
   c.r = a.r;
   c.i = -a.i;
   return c;
}

dcomplex roznica (dcomplex a, dcomplex b) {
   return add (a,przeciwny (b));
}

dcomplex iloraz (dcomplex a, dcomplex b) {
   return mult (a, odwrotny (b));
}

double modul (dcomplex a) {
   return fabs(a.r) * sqrt(1+(a.i/a.r)*(a.i/a.r));
}

int ur2 (dcomplex a,dcomplex b,dcomplex c,dcomplex d,dcomplex e,dcomplex f, dcomplex *x, dcomplex *y) {
   dcomplex det;
   det = roznica(mult(a,e), mult(d,b));
   if (det.r == 0 && det.i == 0) return 0;
   else
   *x = iloraz(roznica(mult(c,e), mult(f,b)),det);
   *y = iloraz(roznica(mult(a,f), mult(d,c)),det);
   return 1;
}

int main () {

   dcomplex a,b,c,d,e,f,x,y;
   /*double m;*/

   printf ("podaj czesc rzeczywista liczby zespolonej a : ");
   scanf ("%lf", &a.r);
   printf ("podaj czesc urojona liczby zespolonej a : ");
   scanf ("%lf", &a.i);
   printf ("podaj czesc rzeczywista liczby zespolonej b : ");
   scanf ("%lf", &b.r);
   printf ("podaj czesc urojona liczby zespolonej b : ");
   scanf ("%lf", &b.i);
   printf ("podaj czesc rzeczywista liczby zespolonej c : ");
   scanf ("%lf", &c.r);
   printf ("podaj czesc urojona liczby zespolonej c : ");
   scanf ("%lf", &c.i);
   printf ("podaj czesc rzeczywista liczby zespolonej d : ");
   scanf ("%lf", &d.r);
   printf ("podaj czesc urojona liczby zespolonej d : ");
   scanf ("%lf", &d.i);
   printf ("podaj czesc rzeczywista liczby zespolonej e : ");
   scanf ("%lf", &e.r);
   printf ("podaj czesc urojona liczby zespolonej e : ");
   scanf ("%lf", &e.i);
   printf ("podaj czesc rzeczywista liczby zespolonej f : ");
   scanf ("%lf", &f.r);
   printf ("podaj czesc urojona liczby zespolonej f : ");
   scanf ("%lf", &f.i);

   if (ur2(a,b,c,d,e,f,&x,&y))
   printf ("rozwiazanie : x = %lf %lf, y = %lf %lf \n", x.r,x.i,y.r,y.i);
   else printf ("uklad nieoznaczony lub sprzeczny");


   /*printf ("a : %lf, %lf \n", a.r, a.i);
   printf ("b : %lf, %lf \n", b.r, b.i);
        c=przeciwny(a);
   printf ("przeciwny a : %lf %lf \n", c.r,c.i);
        c=przeciwny(b);
   printf ("przeciwny b : %lf %lf \n", c.r,c.i);
        c=odwrotny(a);
   printf ("odwrotny a : %lf  %lf \n", c.r,c.i);
        c=odwrotny(b);
   printf ("odwrotny b : %lf  %lf \n", c.r,c.i);
        c=add(a,b);
   printf ("suma : %lf  %lf \n", c.r,c.i);
        c=add(a,przeciwny(b));
   printf ("roznica : %lf  %lf \n", c.r,c.i);
        c=mult(a,b);
   printf ("iloczyn : %lf  %lf \n", c.r,c.i);   
        c=mult(a,odwrotny(b));
   printf ("iloraz : %lf  %lf \n", c.r,c.i);
        c=sprzezenie(a);
   printf ("sprzezenie a : %lf  %lf \n", c.r,c.i);
        c=sprzezenie(b);
   printf ("sprzezenie b : %lf  %lf \n", c.r,c.i);
        m=modul(a);
   printf ("modul a : %lf \n", m);
        m=modul(b);
   printf ("modul b : %lf \n", m);*/


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

Lukasz
PostWysłany: Czw 13:52, 21 Gru 2006    Temat postu:

BYC MZOE DOBRE Razz
Kod:

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

typedef struct
   {
   double r;
   double i;
   } dcomplex;

dcomplex add(dcomplex a,dcomplex b)
   {dcomplex c;
   c.r=a.r+b.r;
   c.i=a.i+b.i;
   return c;
   }

dcomplex sub(dcomplex a,dcomplex b)
   {dcomplex c;
   c.r=a.r-b.r;
   c.i=a.i-b.i;
   return c;
   }

dcomplex multi(dcomplex a,dcomplex b)
   {dcomplex c;
   c.r=a.r*b.r-a.i*b.i;
   c.i=a.i*b.r-a.r*b.i;
   return c;
   }

double mod(dcomplex a)
   {return a.r*a.r+a.i*a.i;
   }

dcomplex inv(dcomplex a)
   {dcomplex c;
   c.r=-a.i/mod(a);
   c.i=a.r/mod(a);
   return c;
   }

dcomplex div(dcomplex a,dcomplex b)
   {
   return multi(a, inv(b));
   }


void wczytaj(dcomplex *a)
   {
   printf("Podaj Re liczby");
   scanf("%lf",&(a->r));
   printf("Podaj Im liczby");
   scanf("%lf",&(a->i));
    }

int main()
{
dcomplex i,j,k,l,m,n;
wczytaj (&i);
wczytaj (&j);
wczytaj (&k);
wczytaj (&l);
wczytaj (&m);
wczytaj (&n);

dcomplex w,ww,wz,p;
w=sub(multi(i,m),multi(j,l));
ww=sub(multi(k,m),multi(n,l));
wz=sub(multi(i,k),multi(j,n));
if(w.r==0&&w.i==0)
   {if(ww.r==0&&ww.i==0&&wz.r==0&&wz.i==0)
      printf("Uklad rownan nieoznaczony");
   
   else
      printf("Uklad rownan sprzeczny");
   }
else
{
   printf("Rozwiazania to:\n");
        p=div(w,ww);
   printf("w=%lf+%lfi\n",p.r,p.i);
        p=div(w,wz);
   printf("w=%lf+%lfi\n",p.r,p.i);
}

return 0;
}
cadaver
PostWysłany: Czw 20:43, 14 Gru 2006    Temat postu:

Lista 3 zad. 6:

Kod:


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

void zapal( char *A , int n, int i ) {
   A[n] = A[n] | ( 1 << i);

}

void zgas( char A[] , int n, int i ) {
   A[n] = A[n] & (~( 1 << i));

}


int main() {
   char *A;
   unsigned int n,i,g,m,S;
   printf("Ile licz przeszukac(ogranicza cie tylko pamiec)?!?!?!?!? ");
   scanf("%d",&S);   
   g = (int)sqrt(S) + 1;
   A = (char*)malloc((S/8)+1);
   
   for (n = 0; n < S/8+1 ; n++) {
       for (i = 1; i <= 8; i++)
       zapal( A , n, i);
   }
   
   for (n = 2; n < g ; n++) {
      if ((A[n/8] & (1 << n%8))) {
         for(m = 2; n * m <= S; m++) {
          zgas( A , n*m / 8, n*m % 8);
         }
       }
     }
   
      
   for (n = 2; n <= S ; n++)
       if ((A[n/8] & (1 << n%8)))
           printf("%d \n",n);
   system("PAUSE");
   free(A);
   return 0;

}


Udalo mi sie policzyc pierwsze 3,5mld licz pierwszych - plik wynikowy zajmuje 2GB
Gość
PostWysłany: Czw 13:57, 14 Gru 2006    Temat postu:

LISTA 3 - cwiczenia 3,4,5 w jednym [czytelniej niz wyzej ]

Kod:

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

char ZNAKI [16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

void strev (char s[]) {
   int j = 0;
   char x;

   for ( j=0; j<strlen(s)/2; j++) {
      x = s[j];
      s[j] = s[strlen(s)-1 - j];
      s[strlen(s)-1 - j] = x;
   }
}

void uint2str (unsigned int n, int r, char s[]) {

   int i = 0;

   if (n==0) s[i++] = '0';
   else
   while (n) {
      s[i++] = ZNAKI [n % r];
      n = n / r;
   }   

   s[i] = '\0';
   strev(s);
}

int char2uint (int r, char s[]) {
   int k,i = 0;
   int wynik = 0;

   while (s[i] != '\0') {
      k=0;
      while (s[i] != ZNAKI[k]) k++;
      if (k >= r) return -1;
      wynik = wynik*r + k;
      i++;
   }
   return wynik;
}

void d2r (double x, char s[], int r) {
   int i = 0;
   while (i < 40) {
      x=x*r;
      s[i]=ZNAKI[(int)floor(x)];
      x-=floor(x);
      i++;
   }
   s[i]='\0';
}

int main () {

   int n, r;
   char s[100],t[100];
   double x;

   printf ("podaj liczbe n : ");
   scanf ("%d", &n);
   printf ("podaj podstawe r : ");
   scanf ("%d", &r);
   printf ("podaj liczbe x : ");
   scanf ("%lf", &x);

   uint2str (n,r,s);
   printf ("%s\n", s);
   
   printf("%d\n", char2uint(r,s));
       
   uint2str((int)floor(x),r,t);
   d2r (x-floor(x),s,r);
       
   printf("%s,%s\n", t, s);

printf ("\n\n");
return 0;
}
Gość
PostWysłany: Czw 13:56, 14 Gru 2006    Temat postu:

Kod:

aaa
Gość
PostWysłany: Czw 13:56, 14 Gru 2006    Temat postu:

<code>
fddd
</code>
Gość
PostWysłany: Czw 13:55, 14 Gru 2006    Temat postu:

LISTA 3 - cwiczenia 3,4,5 w jednym:

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

char ZNAKI [16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

void strev (char s[]) {
int j = 0;
char x;

for ( j=0; j<strlen(s)/2; j++) {
x = s[j];
s[j] = s[strlen(s)-1 - j];
s[strlen(s)-1 - j] = x;
}
}

void uint2str (unsigned int n, int r, char s[]) {

int i = 0;

if (n==0) s[i++] = '0';
else
while (n) {
s[i++] = ZNAKI [n % r];
n = n / r;
}

s[i] = '\0';
strev(s);
}

int char2uint (int r, char s[]) {
int k,i = 0;
int wynik = 0;

while (s[i] != '\0') {
k=0;
while (s[i] != ZNAKI[k]) k++;
if (k >= r) return -1;
wynik = wynik*r + k;
i++;
}
return wynik;
}

void d2r (double x, char s[], int r) {
int i = 0;
while (i < 40) {
x=x*r;
s[i]=ZNAKI[(int)floor(x)];
x-=floor(x);
i++;
}
s[i]='\0';
}

int main () {

int n, r;
char s[100],t[100];
double x;

printf ("podaj liczbe n : ");
scanf ("%d", &n);
printf ("podaj podstawe r : ");
scanf ("%d", &r);
printf ("podaj liczbe x : ");
scanf ("%lf", &x);

uint2str (n,r,s);
printf ("%s\n", s);

printf("%d\n", char2uint(r,s));

uint2str((int)floor(x),r,t);
d2r (x-floor(x),s,r);

printf("%s,%s\n", t, s);

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

Powered by phpBB © 2001, 2005 phpBB Group