Prawidłowa konstrukcja (3 x 4) char** tab = new char*[3]; for (size_t i = 0; i < 3; i++) tab[i] = new char[4];



Podobne dokumenty
I znowu można jak w C, za pomocą starych struktur i metod:

Funkcje i procedury szybkie przypomnienie Tablice i wskaźniki Napisy

Tablice Napisy Funkcje i procedury Pliki

Tablice Napisy Funkcje i procedury Pliki

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

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

lekcja 8a Gry komputerowe MasterMind

Operacje na łańcuchach znaków

Podstawy Programowania

INFORMATYKA Studia Niestacjonarne Elektrotechnika

C++ - [3-5] Pliki i strumienie w C++

Zajęcia 4 procedury i funkcje

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

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

Zajęcia 6 pliki tekstowe

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

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

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

Lab 9 Podstawy Programowania

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

Podstawy programowania w języku C++

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

Pytania sprawdzające wiedzę z programowania C++

Stałe i zmienne znakowe. Stała znakowa: znak

Inicjacja tablicy jednowymiarowej

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

1 Powtórzenie wiadomości

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

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

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

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

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

Podstawy programowania

dr inż. Jarosław Forenc

Podstawy programowania w języku C++

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

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

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

Struktury, unie, formatowanie, wskaźniki

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

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

Pliki wykład 2. Dorota Pylak

Klasy: String, Random, Math. Korzystanie z dokumentacji.

Zasady programowania Dokumentacja

Strumienie, pliki. Sortowanie. Wyjątki.

ZBIÓR ZADAŃ Z INFORMATYKI

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Funkcje. Wprowadzenie. Mirosław Ochodek

Reprezentacja symboli w komputerze.

1. Wprowadzanie danych z klawiatury funkcja scanf

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Programowanie komputerowe. Zajęcia 5

Programowanie 2 - Tablice i łańcuchy

Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu.

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Programowanie 3 - Funkcje, pliki i klasy

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Laboratorium 10: Maszyna stanów

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Strumienie, pliki. Sortowanie. Wyjątki.

Podstawy programowania w języku C++

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Zajęcia 5 łańcuchy znaków (ciąg dalszy) i funkcje

Tablice jednowymiarowe

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

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Pliki wykład 2. Dorota Pylak

Podstawowe typy zmiennych

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

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

n, m : int; S, a, b : double. Gdy wartości sumy składowej nie można obliczyć, to przyjąć Sij = 1.03 Dla obliczenia Sij zdefiniować funkcję.

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

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

EGZAMIN MATURALNY Z INFORMATYKI POZIOM ROZSZERZONY CZĘŚĆ II MAJ 2011 WYBRANE: Czas pracy: 150 minut. Liczba punktów do uzyskania: 30 WPISUJE ZDAJĄCY

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

3. Opracować program kodowania/dekodowania pliku tekstowego. Algorytm kodowania:

Wstęp do programowania

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

Polcode Code Contest PHP-10.09

Podstawy i języki programowania

System operacyjny UNIX Ćwiczenie 1. Podstawowe polecenia systemu Unix

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Lekcja 6: Pascal. Procedura i funkcja

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Zestaw 1-1 Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp)!!!

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

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

Zmienne, stałe i operatory

Wstęp do programowania

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Transkrypt:

Prawidłowa konstrukcja (3 x 4) char** tab = new char*[3]; for (size_t i = 0; i < 3; i++) tab[i] = new char[4]; STOS STERTA tab for (size_t i = 0; i < 3; i++) delete[] tab[i]; delete[] tab;

1. Zrealizować grę w statki na planszy generowanej dynamicznie (do 10 x 10). Raz strzela użytkownik, raz komputer. Dozwolone okręty: 4 x jednomasztowiec Zaprogramować sytuacje: Trafiony zatopiony, Pudło, W plansze id****.

Napisy traktowane jako tablice zakończone znakiem o kodzie 0:

Porównywanie: strcmp(str1, str2): zwraca -, + lub 0. Kopiowanie: strcpy(str1, str2) znaczy to samo co intuicyjne: str1 = str2. PRZYPISANIA NIE MOŻNA STOSOWAĆ Konkatenacja: strcat(str1, str2) znaczy to samo co intuicyjne: str1 = str1 + str2. Liczba znaków: strlen(str) Konwersje: atol, strtol - zamienia łańcuch na liczbę całkowitą typu long atoi - zamienia łańcuch na liczbę całkowitą typu int atoll, strtoll - zamienia łańcuch na liczbę całkowitą typu long long (64 bity); atof, strtod - przekształca łańcuch na liczbę typu double http://en.cppreference.com/w/cpp/string/byte

char* kopiujstr(const char* wejscie) { char* wynik = new char[strlen(wejscie)]; strcpy(wynik, wejscie); return wynik; } Poprawna wersja: char* kopiujstr(const char* wejscie) { char* wynik = new char[strlen(wejscie) + 1]; strcpy(wynik, wejscie); return wynik; }

Co będzie wyświetlone? char text1[] = "abcdef"; size_t s1 = sizeof(text1); size_t s2 = strlen(text1); char* text2 = "abcdef"; size_t s3 = sizeof(text2); size_t s4 = strlen(text2);

#include <cctype> #include <clocale> Nazwa funkcji isalnum isalpha islower isupper isdigit isxdigit iscntrl isgraph isspace isblank (C++11) isprint ispunct Nazwa funkcji tolower touper Opis Sprawdza czy znak jest alfanumeryczny Sprawdza czy znak to poprawna litera Sprawdza czy znak to mała litera Sprawdza czy znak to wielka litera Sprawdza czy znak to liczba Sprawdza czy znak to liczba w systemie szesnastkowym Sprawdza czy znak jest znakiem kontrolnym Sprawdza czy znak ma reprezentację graficzną Sprawdza czy znak jest białym znakiem Sprawdza czy znak jest białym znakiem rozdzielającym słowa Sprawdza czy znak można wyświetlić Sprawdza czy znak jest znakiem przystankowym Opis Zamienia znak na pisany małą literą Zamienia znak na pisany wielką literą

Oraz: strcpy strcat strrev

1. Zadeklaruj napis 0-terminated string o długości 10 i przypisz mu 11 znaków (najpierw w deklaracji, a potem za pomocą konkatenacji) 2. Przeczytaj z klawiatury kilka napisów i dodawaj je do jednej zmiennej c-string. Jeśli będzie za dużo znaków, poinformuj o tym użytkownika. 3. Zmień małe na wielkie litery i odwrotnie w napisie przeczytanym z klawiatury.

Jesteśmy uratowani! W C++ jest typ string!

Konwersja na string: string to_string(int val); string to_string(unsigned val); string to_string(long val); string to_string(unsigned long val); string to_string(long long val); string to_string(unsigned long long val); string to_string(float val); string to_string(double val); string to_string(long double val); Konwersja ze stringa na int stoi(const string& str, size_t *idx=0, int base=10); long stol(const string& str, size_t *idx=0, int base=10); unsigned long stoul(const string& str, size_t *idx=0, int base=10); long long stoll(const string& str, size_t *idx=0, int base=10); unsigned long long stoull(const string& str, size_t *idx=0, int base=10); float stof(const string& str, size_t *idx=0); double stod(const string& str, size_t *idx=0); long double stold(const string& str, size_t *idx=0);

Pozostałe metody: str1.compare(str) analogiczne do tego z C str1.c_str(str) zwraca stary łańcuch 0-terminated str1.find(co, [odkad]), rfind (ostatnie wystąpienie), find_first_not_of, find_first_of, str1.replace(start,length,sourceforreplacement) str1.substr(odkad, ile_znakow) zwraca podciąg ciągu str1.swap(str) zamienia zawartości ciągów między sobą http://en.cppreference.com/w/cpp/string/basic_string

1. Czym różni się operator [] od funkcji at? Sprawdź to praktycznie 2. Zaimplementuj proste szyfry harcerskie: GA-DE-RY-PO-LU-KI, PO-LI- TY-KA-RE-NU, KA-CE-MI-NU-TO-WY. Wyświetla się menu, gdzie użytkownik wybiera szyfr. Następnie komunikat Podaj ciąg wejściowy, który jest odczytywany przez program a następnie zmieniane litery zgodnie ze wzorcem szyfru. 3. Napisz program deszyfrujący podany ciąg (zaszyfrowany prostym szyfrem podstawieniowym: DOXQRIRGB MFBOTPWX LPLYX ALPQXGB MIRPFHX 4. Przeczytaj od użytkownika ciąg tekstu zakończony znakiem kropki (.) Następnie podziel tenże tekst na słowa i wszystkie dłuższe od 4 znaków zapisz do oddzielnej tablicy stringów. Na końcu wypisz na ekran napis złożony z 2 i 3 znaku każdego elementu w tej nowej tablicy. 5. Zadeklaruj dłuższy tekst zawierający słowa zakazane (np. matematyka ) i pozamieniaj wszystkie wystąpienia na coś neutralnego (np. kwiatek ). 6. Napisz funkcję sprawdzającą czy wyraz jest palindromem. Tu konkurs na najkrótszy program

I znowu można jak w C, za pomocą starych struktur i metod:

Odczyt (ifstream) Zapis (ofstream) Czego tu wszędzie brakuje? plik.close();

Wynik Plik testowy.txt

app jak append http://www.cplusplus.com/reference/iostream/ifstream/ http://www.cplusplus.com/reference/iostream/ofstream/

Funkcja good() jest tutaj lepsza.

int get(); - zwraca znak ze strumienia (lub EOF jeśli skończył się plik) i konwertuje na typ integer. istream& get( char& c ); - wpisuje do c odczytany ze strumienia znak [koniec pliku należy sprawdzić przez eof() ]. istream& get( char* buf, int len, char eot = '\n' ); - pobiera ze strumienia do `buf' maksymalnie `len' znaków i aż do napotkania znaku `eot' lub do pobrania len 1 znaków. istream& getline( char* buf, int len, char eot = '\n' ); - jak powyższa get, ale znak `eot' nie jest zapisywany w `buf' istream& read( char* ptr, long len ); istream& read( void* ptr, long len ); - odczytują ze strumienia maksymalnie `len' znaków do `ptr'; istream& unget();- wstawia znak z powrotem do strumienia bool good() sprawdza czy nie zostały ustawione jakiekolwiek flagi błędów dla strumienia (eofbit, failbit and badbit).

Dokonaj normalizacji danych w pliku. Załóżmy, że plik input.txt wygląda tak: 1. Dla każdego przypadku testowego wyświetl średnią z trzeciej kolumny. 2. Znormalizuj wszystkie dane w trzeciej kolumnie do przedziału [0 1]. 3. Zapisz taki przetworzony plik do nowego pliku tekstowego. Normalizacja: Ymin = 0 Ymax = 1

Informatyk z firmy KompOK zapisał w pliku hasla.txt 200 haseł. Każde hasło umieszczone jest w osobnym wierszu pliku. Hasło składa się tylko z małych liter alfabetu angielskiego, zaś jego długość wynosi od 3 do 10 znaków. Wykorzystując dane zawarte w tym pliku, wykonaj poniższe polecenia. Odpowiedzi do poszczególnych podpunktów zapisz w pliku tekstowym odpowiedzi1.txt opatrując je numerem podpunktu: Pliki z danymi: www.tomaszx.pl/materialy/jpoig_dane.zip

1. Podaj, ile haseł ma parzystą, a ile nieparzystą liczbę znaków. 2. Utwórz zestawienie haseł (po jednym w wierszu), które są palindromami. 3. Utwórz zestawienie haseł (po jednym w wierszu) zawierających w sobie dwa kolejne znaki, których suma kodów ASCII wynosi 220. 4. Wypisz najkrótsze i najdłuższe hasło z pliku. Przykłady: Hasło krzysio zawiera dwa kolejne znaki si, których suma kodów ASCII wynosi 220. Kod ASCII znaku s to 115, kod znaku i to 105; suma kodów wynosi 115+105 = 220. Hasło cyrk zawiera również takie dwa kolejne znaki. Kod ASCII znaku c to 99, kod ASCII znaku y to 121; suma kodów wynosi 99+121=220

W pliku liczby.txt, w oddzielnych wierszach, znajduje się 1000 liczb zapisanych w systemie dwójkowym o długościach zapisów od 2 do 16 cyfr (0 lub 1). Napisz program, którego wykonanie da odpowiedzi do poniższych podpunktów. Odpowiedzi zapisz w pliku odpowiedzi2.txt, a każdą odpowiedź poprzedź literą oznaczającą ten podpunkt. 1. Ile jest liczb parzystych w całym pliku? 2. Jaka jest największa liczba w tym pliku? Podaj jej wartość w dwóch systemach: dwójkowym i dziesiętnym. 3. Ile liczb w całym pliku ma dokładnie 9 cyfr? Podaj sumę tych liczb w systemie dwójkowym i dziesiętnym.

Napisać program, którego zadaniem jest odczytanie danych tabelarycznych w pliku tekstowym, a następnie zapisanie ich do nowego pliku w postaci kodu HTML. Dane rozdzielone spacją. Przykład: Wejście: "Waga" "Wzrost" "BMI" "Nadwaga" 70 1,8 21,6 "NIE" 67 1,77 21,39 "NIE" 85 1,7 29,41 "TAK" 100 1,92 27,13 "TAK" Wynik: <html><body> <table> <tr><td>"waga"</td><td>"wzrost"</td><td>"bmi"</td><td>"nadwaga"</td> </tr> <tr><td>70</td><td>1,8</td><td>21,6</td><td>"nie"</td></tr> <tr><td>67</td><td>1,77</td><td>21,39</td><td>"nie"</td></tr> <tr><td>85</td><td>1,7</td><td>29,41</td><td>"tak"</td></tr> <tr><td>100</td><td>1,92</td><td>27,13</td><td>"tak"</td></tr> </table> </body></html>

Napisać funkcję przepisz, która jako pierwszy parametr otrzymuje nazwę pliku tekstowego, w którym każda linia wygląda następująco: imię*nazwisko*plec*wiek*pensja gdzie imię i nazwisko zapisane są literami alfabetu angielskiego, płeć to litera 'K' lub 'M', a wiek i pensja, to liczby całkowite dodatnie. Liczba osób zapisanych w pliku jest nieokreślona. W rezultacie jej działania powinny powstać dwa pliki wyjściowe, gdzie jeden będzie zawierał jedynie kobiety (nazwa taka sama jak pliku w przypadku wejściowego poprzedzona, literą 'k'), a drugi mężczyzn (poprzedzony literą 'm'). Jednocześnie do nowych plików należy: nie przepisywać oznaczenia płci, kobietom o wieku większym niż podany jako drugi parametr (wiek) podnieść pensję o 15%, mężczyzną podnieść pensję o tyle, ile mają lat. W wyniku działania funkcji powinien zostać zwrócony średni wiek wszystkich mężczyzn z pliku wejściowego.