Łańcuchy znaków. Agnieszka Nowak - Brzezińska

Podobne dokumenty
1 Przetwarzanie tablic znakowych

Podstawy programowania w języku C++

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Podstawy programowania

Języki programowania obiektowego Nieobiektowe elementy języka C++

ŁAŃCUCHY W JĘZYKU C/C++

Podstawy programowania w języku C++

Programowanie Proceduralne

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

4. Gra w [Za dużo, za mało] (zobacz wykład)

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

Tablice deklaracja, reprezentacja wewnętrzna

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 11. Elektrotechnika, semestr II rok akademicki 2008/2009

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

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

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

Podstawy programowania w języku C++

Języki programowania obiektowego Nieobiektowe elementy języka C++

Podstawy programowania w języku C++

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF10Z

Wykład 6. Operacje na łańcuchach znakowych

Podstawy programowania w języku C++

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Kontrola przebiegu programu

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

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

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF22

INSTRUKCJE REPETYCYJNE PĘTLE

Programowanie w językach wysokiego poziomu

Pliki wykład 2. Dorota Pylak

Tablice, funkcje - wprowadzenie

Podstawy programowania w języku C++

Funkcje zawarte w bibliotece < io.h >

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

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

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

dr inż. Jarosław Forenc

Wyklad 7 Funkcje (c.d.). Tablice jednowymiarowe znaków

Wprowadzenie do programowania w języku C

Funkcje zawarte w bibliotece < io.h >

Wprowadzenie do programowania w języku C

Reprezentacja symboli w komputerze. Znaki alfabetu i łańcuchy znakowe. Programowanie Proceduralne 1

Języki programowania. Tablice struktur, pliki struktur. Część ósma. Autorzy Tomasz Xięski Roman Simiński

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Język C zajęcia nr 5

Programowanie Proceduralne

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

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

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Pliki wykład 2. Dorota Pylak

Microsoft IT Academy kurs programowania

Inicjacja tablicy jednowymiarowej

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

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

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

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

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

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

INSTRUKCJE REPETYCYJNE PĘTLE

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

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

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

Wstęp do Informatyki

Proste programy w C++ zadania

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Podstawy programowania 1

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

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

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

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

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

Struktury czyli rekordy w C/C++

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Podstawy Kompilatorów

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

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

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

scanf( %s,tekst); //znaki podane z klawiatury (do pierwszego białego znaku ) //s kopiowane do zmiennej tekst i dostawiany jest znak \0

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

PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY

Biblioteka standardowa - operacje wejścia/wyjścia

Programowanie w C Typ wskaźnikowy do typu znakowego i operacje na łańcuchach

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Zajęcia 4 procedury i funkcje

Wstęp do programowania 1

Programowanie Proceduralne

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

1 Funkcje i ich wykorzystanie

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

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

Podstawy programowania w Pythonie

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE, ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Podstawy programowania w języku C++

Transkrypt:

Łańcuchy znaków Agnieszka Nowak - Brzezińska

Warto najpierw zajrzeć http://gpl.ii.us.edu.pl/~romex/pp_cxx/pp_cxx_w_07.pdf Wszystkie funkcje są omówione w wykładzie!

Etap I Napisz program w całości na tablicach znaków.

int str_len( char s[] ) int lwr_str_cnt( char s[] ) int upr_str_cnt( char s[] ) int dgt_str_cnt( char s[] ) int nalpha_str_cnt( char s[] ) int chr_str_cnt( char c, char s[] ) int chr_str_pos( char c, char s[] ) int chr_str_rpos( char c, char s[] ) void str_rev( char s[] ) długość łańcucha ile małych znaków ile dużych znaków ile cyfr ile znaków i cyfr liczba wystąpień wskazanego znaku Pozycja znaku w tablicy liczona od 0 lub -1 gdy znak nie znaleziony Wyznacza indeks (pozycje w napisie) ostatniego wystapienia znaku c w s Wyznacza indeks (pozycje w napisie) ostatniego wystapienia znaku c w s

długość napisu liczona w znakach int str_len( char s[] ) int len = 0; while( s[ len ]!= '\0' ) len++; return len;

Liczba małych liter w napisie s int lwr_str_cnt( char s[] ) /* Wersja z iteracja while */ int i = 0, counter = 0; while( s[ i ]!= '\0' ) if( s[ i ] >= 'a' && s[ i ] <= 'z' ) counter++; i++; return counter;

Liczba dużych liter w napisie s int upr_str_cnt( char s[] ) /* Wersja z iteracja for */ int i, counter; for( i = 0, counter = 0; s[ i ]!= '\0'; i++ ) if( s[ i ] >= 'A' && s[ i ] <= 'Z' ) counter++; return counter;

Liczba cyfr w napisie s int dgt_str_cnt( char s[] ) /* Wersja z iteracja for */ int i, counter; for( i = 0, counter = 0; s[ i ]!= '\0'; i++ ) if( s[ i ] >= '0' && s[ i ] <= '9' ) counter++; return counter;

Liczba liter i cyfr w napisie s int nalpha_str_cnt( char s[] ) /* Wersja z iteracja for */ int i, counter; for( i = 0, counter = 0; s[ i ]!= '\0'; i++ ) if(! ( s[ i ] >= '0' && s[ i ] <= '9' s[ i ] >= 'a' && s[ i ] <= 'z' s[ i ] >= 'A' && s[ i ] <= 'Z' ) ) counter++; return counter;

Liczba wystąpień znaku c w napisie s int chr_str_cnt( char c, char s[] ) int i, counter; for( i = 0, counter = 0; s[ i ]!= '\0'; i++ ) if( s[ i ] == c ) counter++; return counter;

Pozycja znaku w tablicy liczona od 0 lub -1 gdy znak nie znaleziony int chr_str_pos( char c, char s[] ) int i; for( i = 0; s[ i ]!= '\0'; i++ ) if( s[ i ] == c ) return i; return -1;

Pozycja znaku w tablicy liczona od 0 lub -1 gdy znak nie znaleziony int chr_str_rpos( char c, char s[] ) int i; for( i = str_len( s ) - 1; i >= 0; i-- ) if( s[ i ] == c ) return i; return -1;

Odwraca kolejność znaków w tablicy s void str_rev( char s[] ) int i, len, c; for( i = 0, len = str_len( s ); i <= len / 2; i++ ) c = s[ i ]; s[ i ] = s[ len - i - 1 ]; s[ len - i - 1 ] = c;

int main() char line[ MAX_LEN ]; char c; int pos; printf( "\n\nwpisz linie tekstu: " ); gets( line ); printf( "\nliczba znakow : %d", str_len( line ) ); printf( "\nliczba malych liter : %d", lwr_str_cnt( line ) ); printf( "\nliczba duzych liter : %d", upr_str_cnt( line ) ); printf( "\nliczba cyfr : %d", dgt_str_cnt( line ) ); printf( "\nliczba innych znakow : %d", nalpha_str_cnt( line ) ); printf( "\n\npodaj pojedynczy znak: " ); c = getchar(); fflush( stdin ); printf( "\nliczba wystapien znaku %c : %d", c, chr_str_cnt( c, line ) ); if( ( pos = chr_str_pos( c, line ) )!= -1 ) printf( "\npierwsze wystapienie znaku %c od poczatku : %d", c, pos + 1 ); else printf( "\nznak %c nie zostal znaleziony", c ); if( ( pos = chr_str_rpos( c, line ) )!= -1 ) printf( "\npierwsze wystapienie znaku %c od konca : %d", c, pos + 1 ); else printf( "\nznak %c nie zostal znaleziony", c ); printf( "\n\nnapis oryginalny : %s", line ); str_rev( line ); printf( "\nnapis odwrocony : %s", line ); ( void )getchar(); return 0;

Etap II Napisz program w całości stosując wskaźniki przy łańcuchach znaków.

Ile znaków ma łańcuch? int str_len(char * s) int i=0; while (*s!= '\0') s++; i++; return i;

Ile jest wielkich liter? int str_upr_cnt(char * s) int i=0; while (*s!= '\0') if ((*s >= 'A')&&(*s <= 'Z')) i++; s ++; return i;

Ile jest małych liter? int str_low_cnt(char *s) int i=0; while (*s!= '\0') if ((*s >= 'a')&&(*s <= 'z')) i++; s ++; return i;

Odwróć łańcuch! char * str_rev(char * s) char * pom,*s1=s,c; for (pom=s+str_len(s)-1 ; pom > s ; s++,pom --) c = *s; *s = *pom; *pom=c; return s1;

int main() char * lan; //char lan[20]; puts("podaj lancuch..."); gets(lan); printf("\ndlugosc podanego lancucha wynosi: %d",str_len(lan)); printf("\nliczba duzyh znakow: %d",str_upr_cnt(lan)); printf("\nliczba malych znakow: %d",str_low_cnt(lan)); printf("\nodwrocony lancuch: %s",str_rev(lan)); getch(); return 0;