WEiTI M3 - 2007

  • Nie jesteś zalogowany.
  • Polecamy: Gry

  • Index
  •  » PRM
  •  » Programy na laborke 3

#1 2007-03-22 19:54:38

omel

Nowicjusz

6655340
Skąd: Brzeziny
Zarejestrowany: 2007-03-20
Posty: 53
Punktów :   

Programy na laborke 3

Jako, ze niektorzy (albo i niektorE ;-)) nie bawili sie w programowanie, to jako wskazowke/sciage umieszczam to co napisalem (nie rozumiem cwiczenia 4, wiec sobie odpuscilem) - jak dokoncze reszte to moge zamiescic jakby ktos byl zainteresowany. Powinno byc poprawnie, bo sprawdzalem dla paru przykladowych danych. Kawalek system("PAUSE"); jest po to, zeby nie zamykalo sie okienko w windowsie (to z konsola). Aha - ja to pisalem w programie Dev C++ http://sourceforge.net/project/download … ror=puzzle - plik zajmuje cos okolo 9 mega. Milego pisania!!

1. obliczanie średniej z danych na standardowym wejściu

Kod:

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

int main(int argc, char *argv[])
{
  int liczba = 0, suma = 0, i = -1;
  
  do
  {
      printf("Podaj liczbe (lub 0, aby zakonczyc): ");
      scanf("%d", &liczba);
      suma += liczba;
      i ++;
  } while(liczba);
  
  if(i)
  	   printf("Srednia wynosi %g\n", (float)suma/i);
      
  system("PAUSE");	
  return 0;
}

2. program - echo standardowego wejścia na standardowe wyjście

Kod:

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

int main(int argc, char *argv[])
{
  int i;
  
  for(i = 1; i < argc; i ++)
  		printf("%s ", argv[i]);
  		
  printf("\n");
  
  system("PAUSE");	
  return 0;
}

3. obliczanie pierwiatsków rzcywistych równania kwadratowego

Kod:

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

int main(int argc, char *argv[])
{
  int a, b, c;
  signed int delta;
  
  printf("Podaj wspolczynnik a: "); scanf("%d", &a);
  printf("Podaj wspolczynnik b: "); scanf("%d", &b);
  printf("Podaj wspolczynnik c: "); scanf("%d", &c);
  
  printf("%dx^2+%dx+%d\n", a, b, c);
  
  delta = b*b - 4*a*c;
  
  if(delta < 0)
  		   printf("Rownanie nie ma pierwiastkow rzeczywistych\n");
  else if(delta == 0)
  	   printf("Rownanie ma jeden pierwiastek rzeczywisty: x = %g\n", (float)-b/2*a);
  else
  {
   	  float x1 = (-b-sqrt(delta)) / 2*a;
   	  float x2 = (-b+sqrt(delta)) / 2*a;
   	  printf("Rownanie ma dwa pierwiastki rzeczywiste:\n");
   	  printf("x1 = %g\n", x1);
   	  printf("x2 = %g\n", x2);
  }
  
  system("PAUSE");	
  return 0;
}

5. program hello world witający się z użytkownikiem; nazwa użytkownika jako 6. argument funkcji main lub podawana ze std. wejścia

Kod:

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

int main(int argc, char *argv[])
{
	char nazwa[21];
	if(argc < 7)
	{
		printf("Podaj nazwe uzytkownika[do 20 znakow]: ");
		scanf("%20s", nazwa);
		printf("Witaj %s!\n", nazwa);
	}
	else
	{
		printf("Witaj %s!\n", argv[6]);	
	}
	
  
    system("PAUSE");	
    return 0;
}

Offline

 

#2 2007-03-22 22:51:14

martus

Władca much

8795851
Zarejestrowany: 2007-03-20
Posty: 61
Punktów :   -2 

Re: Programy na laborke 3

A ja się pochwalę!! zdołałam napisać swój własny program:D ten  z liczeniem pierwiastków- działa nawet:D teraz trzeba się brać za następne. Niestety nie zmienia to faktu, że wydymy pozostają nadal czarną magią:/

Offline

 

#3 2007-03-23 15:51:12

omel

Nowicjusz

6655340
Skąd: Brzeziny
Zarejestrowany: 2007-03-20
Posty: 53
Punktów :   

Re: Programy na laborke 3

No to gratulacje!! Wez go wrzuc na forum - moze masz jakies fajne rozwiazania?

BTW: Teraz Masz duzo fajniejsza fotke, tzn tamta nie byla niefajna, tylko ta jest jeszcze fajniejsza :-) <<----- o!! i to sie nazywa sztuka dyplomacji :-P

Offline

 

#4 2007-03-23 18:39:25

martus

Władca much

8795851
Zarejestrowany: 2007-03-20
Posty: 61
Punktów :   -2 

Re: Programy na laborke 3

Jutro wrzucę, to, co mam. Za zdjęcie dzięki (sama je sobie zrobiłam:]) a skoro juz doceniamy Twoja dyplomację to pozostało już tylko rzucić hasło: "Omel na prezydenta!" P

Offline

 

#5 2007-03-25 23:11:56

omel

Nowicjusz

6655340
Skąd: Brzeziny
Zarejestrowany: 2007-03-20
Posty: 53
Punktów :   

Re: Programy na laborke 3

Na prezydenta? Po kaczynskim to kazdy wybadlby blado. A poza tym to szczeble kariery trzeba przechodzic po kolei - ja przeciez nie jestem starosta nawet...
Aha - wrzuc to co ci sie udalo napisac w C.

Offline

 

#6 2007-03-25 23:51:06

martus

Władca much

8795851
Zarejestrowany: 2007-03-20
Posty: 61
Punktów :   -2 

Re: Programy na laborke 3

bardzo PROSTY PROśCIUTEńKI programik nr 8 chba

#include<stdio.h>


int main(void)
{

    int a, b;
    printf("Podaj liczbe a = \n");
    scanf("%d", &a);
    printf("Podaj liczbe b = \n");
    scanf("%d", &b);
    if ((a %b !=0) && (b %a !=0))
    printf("Liczby a i b sa wzglednie pierwsze \n");
    else
    printf("Liczby a i b nie sa wzglednie pierwsze \n");
    return 0;
   
   
}

Offline

 

#7 2007-03-25 23:53:51

martus

Władca much

8795851
Zarejestrowany: 2007-03-20
Posty: 61
Punktów :   -2 

Re: Programy na laborke 3

a to nr 9

#include<stdio.h>


int main(void)

{

    float a, b, c, d, M, N;
    printf("Podaj wspolczynnik kierunkowy pierwszej prostej a i jej wyraz wolny b \n");
    scanf("%f %f", &a, &b);
    printf("Podaj wspolczynnik kierunkowy drugiej prostej c i jej wyraz wolny d \n");
    scanf("%f %f", &c, &d);
   
    M=(b-d)/(c-a);
    N=(a*M)+b;
    printf("Punkt przeciecia podanych prostych to (%.2f, %.2f) \n", M, N);
    return 0;
   
}





a to 7

#include <stdio.h>


int main(void)
{
    int a ,b ,c;

   
    printf("Podaj liczbe a = \n");
    scanf("%d", &a);
   
    for (b=1, c=0; a>=b; b++)
    {
    if (a %b ==0)
    c++;
    }
    if (c==2)
    printf("Podana liczba jest liczba pierwsza \n");
    else
    printf("Podana liczba nie jest liczba pierwsza\n");
    return 0;

     
   
}

Offline

 

#8 2007-03-26 01:20:06

wmichal

Nowicjusz

Zarejestrowany: 2007-03-24
Posty: 40
Punktów :   

Re: Programy na laborke 3

A ja mam pewne rozwinięcie pierwszego. Przydałoby się jeszcze tylko dodać warunek sprawdzający czy liczba nie wychodzi poza zakres (to już chyba jutro po pomiarach sobie spokojnie zrobię).

/*liczy średnią wprowadzonych liczb*/
#include <stdio.h>
int main(void)
{
   
    float liczba, suma, srednia;
    int licznik;
    char odp;
   
    printf("\nProgram oblicza srednia wprowadzonych liczb\n");
    printf("Po kazdej podanej liczbie wcisnij ENTER; 0 konczy wprowadzanie.\n");
    printf("Dane, ktore nie rozpoczynaja sie od liczby beda ingnorowane.\n");
   
    do {
        fflush(stdin);
        liczba = 1;
        suma = 0;
        licznik = 0;
        printf("Podaj liczby:\n\n");
     
        while(liczba!=0)
        {
       
            if(scanf("%f",&liczba))
            {
            suma += liczba;
            licznik++;
            }
            fflush(stdin);
           
        }
        if(!(licznik-1))
            printf("Nie wprowadziles zadnych liczb.");
        else
        {
            srednia = suma/(licznik-1);
            printf("Srednia wprowadzonych liczb wynosi: %.2f\n",srednia);
        }
       
        printf("Nacisnij t jesli chcesz zaczac od poczatku "); scanf("%c",&odp);
    }
    while(odp=='t');
   
       
}

Offline

 

#9 2007-03-26 02:51:20

lukasz

Niemowa

Zarejestrowany: 2007-03-26
Posty: 1
Punktów :   

Re: Programy na laborke 3

Trochę szybsza wersja 7. Dla liczb ~= 2000000000. Szybsza ale za to jaka paskudna.

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

int isPrime(int number, int certainty) {
    int temp;
    int i;

    srand((unsigned)time(0));

    for(i = 0;i < certainty;++i) {
        while((temp = rand()) > 2);

        if(modPow(temp, number, number) != temp) {
            return 0;
        }
    }

    return 1;
}

int modPow(long number, int exponent, int modulo) {
    long result = 1;

    while(exponent > 0) {
        if(exponent & 1) {
            result = (result * number) % modulo;
        }
        exponent >>= 1;
        number = (number * number) % modulo;
    }

    return (int)result;
}

int main(void) {
    int number;
    const int certainty = 100;

    puts("Podaj liczbe");
    scanf("%d", &number);

    if(isPrime(number, certainty)) {
        printf("Liczba jest pierwsza z prawdopodobienstem 1 / (2 ^ %d)\n", certainty);
    } else {
        puts("Liczba nie jest pierwsza");
    }
    getchar();
    return 0;
}

Offline

 

#10 2007-03-26 23:00:45

zordon

Ukryty talent

6821953
Skąd: Riviera/Biała Podlaska
Zarejestrowany: 2007-03-20
Posty: 87
Punktów :   -1 

Re: Programy na laborke 3

Marta ale ten program sprawdzajacy czy liczby sa wzglednie pierwsze jest troche nie taki! Bo np dla liczb a i b rownych a=6 i b=4 program wskaze ze liczby sa wzglednie pierwsze bo 6/4=1 r 2 i 4/6 =0 r 4 (reszty rozne od zera) czyli wedlug kodu zrodlowego sa one  wzglednie pierwsze a nie sa bo dziela sie obie przez 2

Offline

 

#11 2007-03-26 23:07:33

martus

Władca much

8795851
Zarejestrowany: 2007-03-20
Posty: 61
Punktów :   -2 

Re: Programy na laborke 3

wiem wiem;/ //////////// zaraz sprobuje cos z tym zrobic:/

Offline

 

#12 2007-03-26 23:08:19

_Aragorn_

Administrator

2376607
Skąd: Riviera
Zarejestrowany: 2007-03-19
Posty: 21
Punktów :   

Re: Programy na laborke 3

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

main()
{
      int x1=0,x2=0,y1=0, y2=0;
      float odl=0;

      printf("Podaj x1: \n");
      scanf("%d", &x1);
      printf("Podaj y1: \n");
      scanf("%d", &y1);
      printf("Podaj x2: \n");
      scanf("%d", &x2);
      printf("Podaj y2: \n");
      scanf("%d", &y2);
     
      odl=sqrt((x1 - x2)*(x1 - x2)+(y1 - y2)*(y1 - y2));
      printf("Odleglosc = %f\n", odl);
     
      system("Pause");
}



program nr 12
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
      int a=0,b=0,c=0;
      float delta, minmax=0;

      printf("Podaj a: \n");
      scanf("%d", &a);
      printf("Podaj b: \n");
      scanf("%d", &b);
      printf("Podaj c: \n");
      scanf("%d", &c);

      delta = b*b - 4*a*c;
     
     
      minmax = -delta/4*a;
     
      if (a<0)
              printf("Rownaie ma minimum rowne = %g\n", minmax);
      else if (a>0)
              printf("Rownanie ma maximum rowne = %g\n", minmax);
           else
                printf("To nie jest rownanie kwadratowe!!!\n");
     
     
      system("Pause");
}

Offline

 

#13 2007-03-27 00:09:02

zordon

Ukryty talent

6821953
Skąd: Riviera/Biała Podlaska
Zarejestrowany: 2007-03-20
Posty: 87
Punktów :   -1 

Re: Programy na laborke 3

No to jest chyba juz dobry programik na te liczby wzglednie pierwsze!

#include <stdio.h>

int main()
{
int lb1=0,lb2=0,wynik=0,reszta=0,NWD=0,temp;;
printf("Program sprawdzi czy liczby sa wzglednie pierwsze");

printf("Podaj dowolne dwie liczby\n");
printf("Podaj pierwsza liczbe\nLiczba: ");
scanf("%d",&lb1);
printf("\n\nPodaj druga liczbe\nLiczba: ");
scanf("%d",&lb2);

do
{
temp=lb2;
lb2=lb1%lb2;
lb1=temp;
if (lb2==0)
{
printf("Liczby nie sa wzglednie pierwsze\n");
break;
}
else if (lb2!=0)
{
printf("Liczby sa wzglednie pierwsze");
break;
}
}
while(lb1%lb2!=0);

getch();
return 0;   
}

Offline

 

#14 2007-03-27 00:15:24

szaku

Wstydniś

Zarejestrowany: 2007-03-26
Posty: 15
Punktów :   

Re: Programy na laborke 3

Poprawiony program numer 9. Dodały my warunek coby wyrzucało jak proste są równoległe...

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

int main(void)

{

    float a, b, c, d, M, N;
    printf("Podaj wspolczynnik kierunkowy pierwszej prostej a i jej wyraz wolny b \n");
    scanf("%f %f", &a, &b);
    printf("Podaj wspolczynnik kierunkowy drugiej prostej c i jej wyraz wolny d \n");
    scanf("%f %f", &c, &d);
   
    if (c==a)
             if (b==d)
                       printf("proste nakladaja sie na siebie-maja nieskonczenie wiele rozwiazan\n");
             else   
                       printf("proste sa rownolegle i nie maja punktow przeciecia\n");
       
    else
    {
    M=(b-d)/(c-a);
    N=(a*M)+b;
    printf("Punkt przeciecia podanych prostych to (%.2f, %.2f) \n", M, N);
    }
    system ("pause");
    return 0;
   
}

Offline

 

#15 2007-03-27 01:25:33

szaku

Wstydniś

Zarejestrowany: 2007-03-26
Posty: 15
Punktów :   

Re: Programy na laborke 3

a tutej macie taki jajcarski program....podopowiem że działa...konia z rzędem temu kto zczai jak
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
      int n,i;
      double w;
      printf("podaj liczbe wymiarow\n");
      scanf("%d",&n);
     
      int tab[n],tab1[n];
      int j =0;
      for (i=0;i<n;i++)
      {
          printf("podaj %d zmienna %d wymiaru\n",j+1,i+1);
          scanf("%d",&tab[i]) ;
          printf("podaj %d zmienna %d wymiaru\n",j+2,i+1);
          scanf("%d",&tab1[i]);
      }
      w=0;
      for (i=0;i<n;i++)
      {
          printf("i= %d\n",i);
          printf("tab[i]=%d\n",tab[i]);
          printf("tab1[i]=%d\n",tab1[i]);
      }
      for (i=0;i<n;i++)
      {
          w += ((tab1[i]-tab[i])*(tab1[i]-tab[i]));
          printf("w=%f\n",w);
      }
         
      printf("wyr = %f", sqrt(w));
      system("Pause");
}

Offline

 
  • Index
  •  » PRM
  •  » Programy na laborke 3

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.dragonslayers.pun.pl www.rawsmackdown.pun.pl www.magiawyobrazni.pun.pl www.colobot.pun.pl www.trojporozumienie.pun.pl