poprawka lab»ÊÅ‚y semestr

zad1. wczytać boki trójkąta i sprawdzić czy można z nich zbudować trójkąt.

zad2. wczytać boki trójkąta i sprawdzić czy jest to trójkąt prostokątny.

zad3. wczytać liczby z pliku i obliczyć średnią z liczb parzystych

#include <stdio.h>

#include <stdlib.h>

 

void srednia(void);

 

main()

{

        srednia();

        return 0;

}

 

void srednia(void)

{

        int p, i=0, s=0;

        FILE *plik;

 

        plik=fopen("nazwa", "rb");

        while(fread(&p, sizeof(int), 1, plik)==1)

                if(p%2==0)

                {

                        s+=p;

                        i++;

                }

 

        printf("Srednia z liczb parzystych wynosi %g\n", (double)s/i);

 

        fclose(plik);

}

zad4. program wczytuje liczby a b c dopóki spełniają warunek twierdzenia pitagorasa i wypisuje która to przyprostokątna, przeciwprostokątna i pole trójkąta

zad.5

#include <stdio.h>

#include <stdlib.h>

 

main()

{

        int a, b, c;

 

        while(1)

        {

                printf("Podaj dlugosc boku a: ");

                scanf("%d", &a);

                printf("Podaj dlugosc boku b: ");

                scanf("%d", &b);

                printf("Podaj dlugosc boku c: ");

                scanf("%d", &c);

               

                if(a<=0 || b<=0 || c<=0)

                {

                        printf("\nDlugosc boku nie moze byc liczba ujemna.\n\n");

                        break;

                }

                else if(a*a+b*b==c*c)

                        printf("\nPrzyprostokatna nr1 = %d\nPrzyprostokatna nr2 = %d\nPrzeciwprostokatna = %d\nPole trojkata = %g\n\n", a, b, c, (double)a*b/2);

                else if(a*a+c*c==b*b)

                        printf("\nPrzyprostokatna nr1 = %d\nPrzyprostokatna nr2 = %d\nPrzeciwprostokatna = %d\nPole trojkata = %g\n\n", a, c, b, (double)a*c/2);

                else if(b*b+c*c==a*a)

                        printf("\nPrzyprostokatna nr1 = %d\nPrzyprostokatna nr2 = %d\nPrzeciwprostokatna = %d\nPole trojkata = %g\n\n", b, c, a, (double)b*c/2);

                else

                {

                        printf("\nTo nie jest trojkat prostokatny.\n\n");

                        break;

                }

        }

 

        system("PAUSE");

        return 0;

zad5. odczytac z pliku binarnego liczby i znaleźć maksimum

#include <stdio.h>

#include <stdlib.h>

 

int maksi(void)

{

        FILE *plik = fopen("liczby", "r");

        int maks = 0, m1 = 0;

        if(plik)

        {

                while (fread(&m1, 4,1,plik)==1)

                        if(m1 > maks)

                                maks = m1;

        }

        else

               

        {

                printf("Plik nie istnieje");

        }

        return maks;

ï‚· npisac program ktoy zwroci tablice typu int przechowjaca indeksy w ktorych wystepuje znak z w lancuchu lan. (mialo byc bez maina, ale dla demonstracji dalem tez maina)

 

#include <stdio.h>

#include <stdlib.h>

 

int* indeks(char *lan, char z, int *ilosc);

 

int main(void)

{

        int ilosc = 0, *ptr = NULL, i = 0;

        char lan[31] = "lubiekopacdolkipodinnymiludzmi";

        char z = 'o';

 

        ptr = indeks(lan, z, &ilosc);

        printf("Znak %c wystapil pod indeksami \n", z);

        for(i; i<ilosc; i++)

                printf("%d ", *(ptr + i));

        getchar();

        return 0;

}

 

int* indeks(char *lan, char z, int* ilosc)

{

        int i = 0, *p = NULL, j =0;

        for(i =0; *(lan+i) != '\0'; i++)

        {

                if(*(lan+i) == z)

                {

                        p = (int*)realloc(p, (j+1)*sizeof(int));

                        *(p+j) = i;

                        j++;

                }

        }

 

        *ilosc = j;

        return p;

}

program 1: sprawdzic zczy podany punkt lezy na obwodzie kola o srodku xs, ys i promieniu r.

 

#include <math.h>

 

int main(void)

{

        int xs=0, ys=0, xp=0, yp=0;

        double r=0, l=0;

        while(1)

        {

                printf("Podaj wspolrzedne srodka kola: ");

                fflush(stdin);

                scanf("%d %d", &xs, &ys);

                printf("Podaj promien: ");

                fflush(stdin);

                scanf("%lf", &r);

                printf("Podaj wspolrzedne punktu: ");

                fflush(stdin);

                scanf("%d %d", &xp, &yp);

                l = sqrt((double)(xs-xp)*(xs-xp) + (ys-yp)*(ys-yp));

                if(l==r)

                {

                        printf("\nPunkt o wspolrzednych (%d,%d) lezy na obwodzie kola o srodku (%d,%d) i promieniu r = %lf\n", xp,yp,xs,ys,r);

                }

                else

                {

                        printf("\nPunkt o wspolrzednych (%d,%d) nie lezy na obwodzie kola o srodku (%d,%d) i promieniu r = %.2lf\n", xp,yp,xs,ys,r);

                        break;

                }

        }

        return 0;

}

Funkcja wczytuje liczby do momentu podania 0, na biezaco realokuje pamiec, liczby parzyste zapisuje zdublowane, nieparzyste pojedynczo. Notacja wskaznikowa.

*/

#include <stdio.h>

#include <stdlib.h>

 

int* liczby(void);

 

main()

{

        int *wsk=NULL;

 

        wsk=liczby();

 

        free(wsk);

       

        system("PAUSE");

        return 0;

}

 

int* liczby(void)

{

        int *p=NULL;

        int i=0, j;

 

        p=(int*)malloc((i+1) *sizeof(int));

        do

        {

                fflush(stdin);

                scanf("%d", p+i);

                if(*(p+i)==0)

                        break;

                else if(*(p+i)%2==0)

                {

                        i++;

                        p=(int*)realloc(p, (i+2) *sizeof(int));

                        *(p+i)=*(p+i-1);

                        i++;

                }

                else

                {

                        i++;

                        p=(int*)realloc(p, (i+1) *sizeof(int));

                        *(p+i)=*(p+i);

                }

 

        }

        while(1);

 

        j=i;

        for(j=0 ; j<i ; j++)

                printf("%d\n", *(p+j));

 

        return p;

}

/* Rozboj 30.01.2013, zad.1b

Program wypisuje gwiazdki w postaci:

---*

--**

-***

--**

---*

Zalozylem wiec, ze liczba wierszy musi byc liczba nieparzysta

*/

#include <stdio.h>

#include <stdlib.h>

 

main()

{

        int i, j, h, n;

 

        do

        {

                printf("Podaj liczbe wierszy: ");

                scanf("%d", &n);

        }

        while(n%2==0);

 

        h=n/2+1;

 

        for(i=1 ; i<n/2+1 ; i++, h--)

        {

                for(j=h ; j>0 ; j--)

                        printf("-");

                for(j=i ; j>0 ; j--)

                        printf("*");

                printf("\n");

        }

 

 

        for(i=n/2+1 ; i>0 ; i--, h++)

        {

                for(j=0 ; j<h ; j++)

                        printf("-");

                for(j=i ; j>0 ; j--)

                        printf("*");

                printf("\n");

        }

 

        system("PAUSE");

        return 0;

}

/* Rozboj 30.01.2013, zad.1a

Program wypisuje gwiazdki w postaci:

*

**

***

**

*

zalozylem wiec, ze liczba wierszy musi byc liczba nieparzysta

*/

#include <stdio.h>

#include <stdlib.h>

 

main()

{

        int i, j, n;

 

        do

        {

                printf("Podaj liczbe wierszy: ");

                scanf("%d", &n);

        }

        while(n%2==0);

 

        for(i=1 ; i<n/2+1 ; i++)

        {

                for(j=i ; j>0 ; j--)

                        printf("*");

                printf("\n");

        }

 

 

        for(i=n/2+1 ; i>0 ; i--)

        {

                for(j=i ; j>0 ; j--)

                        printf("*");

                printf("\n");

        }

 

        system("PAUSE");

        return 0;

}

Zad 1: Napisac program ktory w zaleznosci od podanego znaku (t/T, n/N) wypisze na ekran wyraz tak/nie. w przypadku innego

 

znaku, program ma wyswietlic "bledny znak" i przerwac wykonanie.

 

#include <stdio.h>

#include <stdlib.h>

 

int main(void)

{

        char c = '\0';

        while(1)

        {

                printf("Podaj znak: ");

                fflush(stdin);

                c= getchar();

                if(c == 't' || c == 'T')

                        printf("tak");

                else if(c == 'n' || c == 'N')

                        printf("nie");

                else

                {

                        printf("zly znak!");

                        break;

                }

        }

        getchar();

        return 0;

}

 

zad 2: napisac funkcje ktora zwraca lancuch znakow wypelniony liczbami. wykonanie funkcji ma sie zakonczyc po podaniu

 

kropki '.', na koncu lancucha dodac symbol konca lancucha: '\0'  (nullterminator). (napisac sama funkcje, bez maina. maina

 

dodalem zeby zademonstrowac dzialanie).

 

#include <stdio.h>

#include <stdlib.h>

 

char * cyfry(void);

 

int main(void)

{

        printf("%s", cyfry());

        fflush(stdin);

        getchar();

        return 0;

}

 

char *cyfry(void)

{

        char c = '\0', *ptr = NULL;

        int i = 0;

        while(1)

        {

                printf("\nPodaj znak: ");

                fflush(stdin);

                c = getchar();

                if(c >= '0' && c <= '9')

                {

                        ptr = (char*)realloc(ptr, (i+1)*sizeof(char));

                        *(ptr + i) = c;

                        i++;

                }

                else if (c == '.')

                {

                        break;

                }

        }

        *(ptr+i) = '\0';

        return ptr;

}

 

zad 3: Funkcja ma zapisywac do pliku binarnego liczby parzyste, wieksze od zera. po podaniu liczby mniejszej od zera,

 

funkcja ma przerwac dzialanie, zamknac plik itd. (bez funkcji wypisz, dodalem ja zeby zademstrowac dzialanie;

 

#include <stdio.h>

#include <stdlib.h>

 

void liczby(void);

void wypisz(void);

 

int main(void)

{

        liczby();

        wypisz();

        fflush(stdin);

        getchar();

        return 0;

}

 

void wypisz(void)

{

        FILE * plik = fopen("liczby", "r");

        int liczba = 0;

        if(plik != NULL)

        {

                while (fread(&liczba, sizeof(int), 1, plik) == 1)

                {

                        printf("%d", liczba);

                }

                fclose(plik);

        }

}

 

void liczby(void)

{

        FILE *plik = fopen("liczby", "w");

        int liczba = 0;

        while(1)

        {

                printf("Podaj liczbe: ");

                scanf("%d", &liczba);

                if(liczba % 2 == 0 && liczba > 0)

                        fwrite(&liczba, sizeof(int), 1, plik);

                else if(liczba < 0)

                        break;

        }

        fclose(plik);

}


Wyszukiwarka