PRI, laboratorium 4


Zakres materiału: Wskaźniki, tablice, "typ" łańcuchowy. (5 pkt)


Zadanie 1. Przetwarzanie tablic, dynamiczna alokacja pamięci.

  1. W katalogu prm4 utworzyć nowy projekt zad1 i do głównego pliku projektu skopiować zawartość pliku źródłowego zad1.c i zapoznać się z działaniem programu.
  2. Prześledzić kod źródłowy programu, zwrócić szczególną uwagę na użycie funkcji malloc i free.
  3. Dlaczego w funkcji dodaj tworzona jest kopia ciągu znakowego nowe_imie_nazwisko? Co się stanie, gdy zamiast lini 21-23 wykona się przypisanie dane[indeks]=nowe_imie_nazwisko (wykomentować wtedy linię 144)?
  4. Dlaczego w argumencie funkcji malloc do wyniku działania funkcji strlen dodaje się jeden?
  5. Co się stanie, gdy typ zmiennej indeks zmieni się na unsigned int (zwrócić uwagę na zapis warunku pętli w liniach 86-87).
  6. Wprowadzic następujące modyfikacje do programu:

Zadanie 2. Przetwarzanie ciągów znakowych.

  1. W katalogu prm4 utworzyć nowy projekt zad2 i do głównego pliku projektu skopiować zawartość pliku źródłowego zad2.c
  2. Zapoznać się z działaniem funkcji wyznaczającej długość ciągu znakowego i porównującej dwa ciągi.
  3. Napisać funkcję sprawdzającą, czy zadany ciąg jest zawarty w innym ciągu (np. "kota" jest zawarty w "Ala ma kota", ale odwrotnie już nie).

Zadanie 3. Zadanie samodzielne.

Grupa A

  1. Utworzyć program, który podmieni słowa we wpisanym zdaniu. Użyć dynamicznego przydziału pamięci na zapis nowego zdania. W tym celu zaimplementować i wykorzystać funkcję, która zwróci nowopowstałe zdanie:

  2. Przykładowe wyniki działania programu:

    Prosze wpisac tekst:
    Ala ma kota.
    Prosze wpisac slowo i zamiennik:
    kota psa
    W zdaniu "Ala ma kota." zamienie slowo "kota" na "psa"
    Nowy napis: "Ala ma psa."
    
    Prosze wpisac tekst:
    Ala ma psa i kota.
    Prosze wpisac slowo i zamiennik:
    psa chomika
    W zdaniu "Ala ma psa i kota." zamienie slowo "psa" na "chomika"
    Nowy napis: "Ala ma chomika i kota."
    
    Prosze wpisac tekst:
    Ala ma kota.
    Prosze wpisac slowo i zamiennik:
    hipopotama psa
    W zdaniu "Ala ma kota." zamienie slowo "hipopotama" na "psa"
    Nie ma slowa do zamienienia!
    Nowy napis: "Ala ma kota."
    
  3. Założenia:

  4. Podpowiedzi:

Grupa B

  1. Utworzyć program, który z liter danego słowa stworzy przepis na stworzenie drugiego zadanego słowa. Użyć dynamicznego przydziału pamięci na zapis przepisu. Zaimplementować funkcję, która zwróci tablicę z indeksami wystąpień odpowiednich liter:

  2. Przykładowe wyniki działania programu:

    Prosze wpisac zrodlo i slowo:
    kosodrzewina drzewo
    Przepis na slowo:
    d 5
    r 6
    z 7
    e 8
    w 9
    o 2
    
    Prosze wpisac zrodlo i slowo:
    kosodrzewina sianko
    Przepis na slowo:
    s 3
    i 10
    a 12
    n 11
    k 1
    o 2
    
    Prosze wpisac zrodlo i slowo:
    kosodrzewina hipopotam
    Nie da sie ulozyc slowa!
    
  3. Założenia:

  4. Podpowiedzi:

Grupa C

  1. Utworzyć program, który usunie za podanego zdania wszystkie słowa zawierające zadany ciąg znaków. Użyć dynamicznego przydziału pamięci na zapis nowego zdania. W tym celu zaimplementować i wykorzystać funkcję, która zwróci nowopowstałe zdanie:

  2. Przykładowe wyniki działania programu:

    Prosze wpisac tekst:
    Ala ma kota i nie ma psa.
    Prosze wpisac ciag znakow:
    nie
    Nowy napis: "Ala ma kota i ma psa."
    
    Prosze wpisac tekst:
    Ala ma kota i nie ma psa.
    Prosze wpisac ciag znakow:
    ma
    Nowy napis: "Ala kota i nie psa."
    
  3. Założenia:

  4. Podpowiedzi: