Podstawy Programowania C 09

Podobne dokumenty
wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Podstawy Programowania

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Programowanie Proceduralne

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Programowanie w językach wysokiego poziomu

Część 4 życie programu

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Argumenty wywołania programu, operacje na plikach

Programowanie Proceduralne

Pliki. Informacje ogólne. Obsługa plików w języku C

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Funkcja (podprogram) void

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Pobieranie argumentów wiersza polecenia

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

1 Podstawy c++ w pigułce.

Programowanie komputerowe. Zajęcia 3

INSTRUKCJE REPETYCYJNE PĘTLE

nowe operatory &. (kropka) * operator rzutowy ->, (przecinek) sizeof

Wstęp do programowania 1

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! )

Wskaźniki w C. Anna Gogolińska

Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

Microsoft IT Academy kurs programowania

Co nie powinno być umieszczane w plikach nagłówkowych:

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Podstawy Kompilatorów

Deklaracje. W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

Język ANSI C tablice wielowymiarowe

Język C zajęcia nr 5

Zmienne i struktury dynamiczne

Program 22. #include <iostream> using namespace std; struct Osoba { string Imie; string Nazwisko; char Plec; int RokUr; };

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Wstęp do programowania

Tablice, funkcje - wprowadzenie

Wskaźniki. Programowanie Proceduralne 1

Podstawy Programowania (PRM) projekt Specyfikacja strukturalna (techniczna)

7 Przygotował: mgr inż. Maciej Lasota

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Ćwiczenie nr 3. Temat: Definicje i wykorzystanie funkcji, parametry funkcji

4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu.

Wstęp do programowania 1

Program 14. #include <iostream> #include <ctime> using namespace std;

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Podstawy Programowania. Tablice i wskaźniki cd., argumenty wywołania programu, reguły stylu programowania, asercje

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

1 Podstawy c++ w pigułce.

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Pliki. Informacje ogólne. Obsługa plików w języku C

Języki programowania. Karolina Mikulska-Rumińska Pokój 573, tel Konsultacje wtorek 9-10.

Ćwiczenia podstawowe, zestaw 5, część 1

Dariusz Chaberski. UMK Toruń

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Instrukcje sterujące

Programowanie strukturalne i obiektowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Język C zajęcia nr 7. Uwagi dotyczące stylu programowania

KURS C/C++ WYKŁAD 1. Pierwszy program

Wstęp do wskaźników w języku ANSI C

Programowanie Proceduralne

Podstawy Programowania Podstawowa składnia języka C++

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Podstawy programowania w języku C++

Laboratorium nr 10. Temat: Funkcje cz.2.

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Programowanie - wykład 4

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Uzupełnienie dot. przekazywania argumentów

Podstawy Programowania C++

Programowanie Obiektowe i C++

1. Abstrakcyjne typy danych

I - Microsoft Visual Studio C++

Informatyka. Wy-02 Tablice, wskaźniki, warunki i pętle. mgr inż. Krzysztof Kołodziejczyk

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Wykład 5. Operacje na tablicach

Podstawy Kompilatorów

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 9 - sem.iii. Dr inż. M. Czyżak

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

Transkrypt:

Zadanie 1. C 09 W języku C argumentem funkcji może być wskaźnik do funkcji np: void druk(void (*v)(int ),int); void druk1(int ); void druk2(int ); void licz(int n); * int main() druk(druk1,1); druk(druk2,1); druk(licz,5); * void druk1(int n) printf("\n\n druk 1 1 1\n"); * void druk2(int n) printf("\n\n druk 2 2 2\n"); * void druk(void (*v)(int ),int n) (*v)( n); * void licz(int n) printf("\n\n n=%d\n",n); Proszę napisać funkcję ekstremum, która zwróci maximum lub minimum w zależności od wywołania printf("max(%d, %d)=%d\n",x,y,ekstr(max,x,y)); printf("min(%d, %d)=%d\n",x,y,ekstr(min,x,y)); Zadanie 2. Proszę napisać program który w tablicy m n wypełnionej 0 i 1 znajdzie największy kwadrat z 1. Np.: Zadanie 3. 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 0 1 0 0 Mrówka porusza się po planszy. Każdy ruch mrówki może być albo w prawo, albo w dół, albo w prawo w dół. Każde pole zawiera pewną ilość punktów karnych proszę napisać program który znajdzie najtańszą drogę. 1 2 3 4 1 3 1 1 2 5 3 8 1 1 5 3 5 5 1 5 2 9 5 1 5 2 2 1 1 1

//ZADANIE 2 #include <stdlib.h> void void zapisz(int **tab,char * nazwa,int wier, int kol); int** odczytaj(char * nazwa,int *wier, int *kol); void licz(int **tab,int wier, int kol); void drukuj(int **tab,int wier,int kol); int min(int, int); int min3(int, int, int); int main() int** t; int wier, kol; t=odczytaj("tab02.tab",&wier,&kol); licz(t, wier, kol); zapisz(t,"tab02_w.tab",wier, kol); void koniec() printf("\n\n K O N I E C\n"); //zpisuje tablicę do pliku *************** void zapisz(int **tab,char * nazwa,int wier, int kol) plik=fopen(nazwa,"w"); fprintf(plik,"%-4d\n",kol); fprintf(plik,"%-4d\n",wier); fprintf(plik,"%-4d",tab[i][j]); fprintf(plik,"\n"); ; //wczytuje tablicę z pliku *************** int** odczytaj(char * nazwa,int *wier, int *kol) int i,j,pkol, pwier; int **tab; plik=fopen(nazwa,"r"); fscanf(plik,"%d ",&pkol); fscanf(plik,"%d ",&pwier); *kol=pkol; *wier=pwier; tab=(int**)malloc(pwier*sizeof(int*)); tab[i]=(int*)malloc(pkol*sizeof(int)); for(j=0;j<pkol;j++) fscanf(plik,"%d ",&tab[i][j]); return tab; //drukuje tablicę *********************** void drukuj(int **tab,int wier,int kol) printf("%-4d",tab[i][j]); printf("\n"); //przelicza tablicę ********************* void licz(int **tab,int wier, int kol) for(i=1;i<wier;i++) for(j=1;j<kol;j++) if(tab[i][j]>0) tab[i][j]=min3(tab[i-1][j],tab[i-1][j-1],tab[i][j-1])+1; int min(int x, int y) if(x<y) return x; return y; int min3(int x, int y, int z) return min(min(x,y),z);

//ZADANIE 3 #include <stdlib.h> void void zapisz(int **tab,char * nazwa,int wier, int kol); int** odczytaj(char * nazwa,int *wier, int *kol); void licz(int **tab,int wier, int kol); void drukuj(int **tab,int wier,int kol); int ** droga(int **tab,int wier,int kol, int *dl); int min(int, int); int min3(int, int, int); int main() int** t, **dr; int wier, kol,ile; t=odczytaj("droga01.tab",&wier,&kol); licz(t, wier, kol); zapisz(t,"droga01_w.tab",wier, kol); dr=droga(t, wier,kol,&ile); drukuj(dr,ile,3); zapisz(dr,"tr_01.dr",ile,3); void koniec() printf("\n\n K O N I E C\n"); //zpisuje tablicę do pliku *************** void zapisz(int **tab,char * nazwa,int wier, int kol) plik=fopen(nazwa,"w"); fprintf(plik,"%4d\n",kol); fprintf(plik,"%4d\n",wier); fprintf(plik,"%4d",tab[i][j]); fprintf(plik,"\n"); ; //wczytuje tablicę z pliku *************** int** odczytaj(char * nazwa,int *wier, int *kol) int i,j,pkol, pwier; int **tab; plik=fopen(nazwa,"r"); fscanf(plik,"%d ",&pkol); fscanf(plik,"%d ",&pwier); *kol=pkol; *wier=pwier; tab=(int**)malloc(pwier*sizeof(int*)); tab[i]=(int*)malloc(pkol*sizeof(int)); for(j=0;j<pkol;j++) fscanf(plik,"%d ",&tab[i][j]); return tab; //drukuje tablicę *********************** void drukuj(int **tab,int wier,int kol) printf("\n\n "); for (i=0;i<kol;i++) printf("%4d",i); printf("\n\n"); printf("%4d",i); printf("%4d",tab[i][j]); printf("\n"); ; printf("\n"); //przelicza tablicę ********************* void licz(int **tab,int wier, int kol) i=0; j=0; for(i=1;i<wier;i++) tab[i][0]+=tab[i-1][0]; for(j=1;j<kol;j++) tab[0][j]+=tab[0][j-1]; for(j=1;j<kol;j++) for(i=1;i<wier;i++) tab[i][j]+=min3(tab[i][j-1],tab[i-1][j-1],tab[i-1][j]); int min(int x, int y) if(x<y) return x; return y; int min3(int x, int y, int z) return min(min(x,y),z);

//znajduje minimalną drogę *************** int ** droga(int **tab,int wier,int kol,int *dl) int** t, **t1; //pierwszy wiersz - nr wiersz drugi wiersz - nr kolumny int i,j,r,l; r=wier+kol+1; t=(int**)malloc(r*sizeof(int*)); for (i=0;i<r;i++) t[i]=(int*)malloc(3*sizeof(int)); for (i=0;i<r;i++) for(j=0;j<3;j++) t[i][j]=0; i=wier-1; j=kol-1; t[0][0]=i; t[0][1]=j; t[0][2]=tab[i][j]; l=1; while(i>0 && j>0) if((tab[i][j-1]<tab[i-1][j-1])&&(tab[i][j-1]<tab[i-1][j])) t[l][0]=i; t[l][1]=j-1; j--; if(tab[i-1][j]<tab[i-1][j-1]) t[l][0]=i-1; t[l][1]=j; i--; t[l][0]=i-1; t[l][1]=j-1; i--; j--; while(i>0) t[l][0]=i-1; t[l][1]=j; i--; while(j>0) t[l][0]=i; t[l][1]=j-1; j--; *dl=l; t1=(int**)malloc(l*sizeof(int*)); for (i=0;i<l;i++) t1[i]=(int*)malloc(3*sizeof(int)); for (i=0;i<l;i++) for(j=0;j<3;j++) for (i=0;i<r;i++) free (t); return t1; t1[i][j]=t[l-i-1][j]; free (t[i]);

Zadanie 4. W języku C można pobierać z pliku znak po znaku używając funkcji fgetc. void void czytaj(char *); int main() czytaj("lista_002.txt"); void koniec() printf("\n\n\tk O N I E C\n"); Zadanie 5. Program kopiujący void void kopiuj(char *, char *); int main() kopiuj("lista_002.txt","kopia.txt"); void koniec() printf("\n\n\tk O N I E C\n"); void czytaj(char * n) char c; plik=fopen(n,"r"); if(plik!=null) while(c!=eof) printf("%c",c); fclose(plik); printf("\nniestety brak pliku \"%s\"\n",n); void kopiuj(char * n,char * t) FILE *plik, *tr; char c; plik=fopen(n,"r"); tr=fopen(t,"w"); if(plik!=null) while(c!=eof) fputc(c,tr); printf("%c",c); fputc(c,tr); fclose(plik); printf("\nniestety brak pliku \"%s\"\n",n);

Zadanie 6. Program zliczjący ilość wystąpień słowa abba w pliku tekstowym. void int czytaj(char *); int main() int z; z=czytaj("lista_004.txt"); printf("\twyraz \"abba\" \n\n\twystapil %d razy\n",z); void koniec() printf("\n\n\tk O N I E C\n"); int czytaj(char * n) char k, c; int i, st; i=0; st=1; plik=fopen(n,"r"); if(plik!=null) while(c!=eof) switch (c) case 'a': if (st==1) st=2; if (st==2) st=2; if (st==3) st=2; if (st==4) st=2; i++; break; case 'b': if (st==1) st=1; if (st==2) st=3; if (st==3) st=4; if (st==4) st=1; break; default: st=1; fclose(plik); printf("\nniestety brak pliku \"%s\"\n",n); return i;