mój program ma wypisywać coś takiego: Ciąg wyjściowy: Ala ma kota i psa.
Ciąg wyjściowy: Ala ma kota, psa, tygrysa oraz hipopotama.
Wyrazy:
- Ala
- ma
- kota
- psa
- tygrysa
- oraz
- hipopotama
Wszystkich wyrazow: 7
a wypisuje tylko Ciag wyjściowy: ,psa, tygrysa oraz hipopotama.
w wyjściowym to samo.
#include <iostream>
#include <stdio.h>
#include <string.h>
#include "wyrazy.h"
#define ROZMIAR_WE 20
#define ROZMIAR_WY 15
#define ROZMIAR_DODATEK 40
#define ROZMIAR_TEMP 40
using namespace std;
int main()
{
char wejsciowy[ROZMIAR_WE] = "Ala ma kota i psa.";
char wyjsciowy[ROZMIAR_WY];
char tymczasowy[ROZMIAR_TEMP];
char *index;
unsigned int i, j;
unsigned int poczatek;
char biezacy;
unsigned int liczba_wyrazow;
// Przekopiuj ciag wejsciowy do ciagu wyjsciowego, pomijajac kropke
strncpy(wyjsciowy, wejsciowy, ROZMIAR_WE);
// Znajdz pozycje ciagu " i psa", potrzebna do obciecia zdania wejsciowego
index = strstr(wyjsciowy, " i psa,");
// Obetnij zdanie wejsciowe - usun ciag " i psa."
if (index){
index[0] = 0;
// Dodaj zadany nowy ciag
strncat (wyjsciowy, ", psa, tygrysa oraz hipopotama.", ROZMIAR_DODATEK);}
// Wyswietl ciagi wejsciowy i wyjsciowy
printf("Ciag wejsciowy: %s\n", wejsciowy);
printf("Ciag wyjsciowy: %s\n", wejsciowy);
printf("\nWyrazy:\n\n");
// Wypisz i policz wszystkie wyrazy
liczba_wyrazow = wypisz_wyrazy(wejsciowy);
// Wydrukuj podsumowanie
printf("\nWszystkich wyrazow: %d\n", liczba_wyrazow);
return 0;
}
#include <stdio.h>
#include <string.h>
#define ROZMIAR_TEMP 5
unsigned int wypisz_wyrazy(char* zdanie)
{
char tymczasowy[ROZMIAR_TEMP];
unsigned int i,j;
unsigned int poczatek;
char biezacy;
bool separator;
//
// Wyswietl poszczegolne wyrazy
//
j = 0;
poczatek = 15;
separator = false;
for (i=0; i<strlen(zdanie); i++)
{
// Pobierz biezacy znak lancucha (na pozycji i)
biezacy = *(zdanie+i);
// Sprawdz, czy to jest separator
if (biezacy == ' ')
// Jesli poprzedni znak nie byl separatorem, wydrukuj wszystkie znaki pomiedzy
// biezacym poczatkiem wyrazu a aktualna pozycja
if (!separator)
{
strncpy(tymczasowy, zdanie+poczatek, i+poczatek);
tymczasowy[i+poczatek] = 0;
printf("%d. %s\n", j, tymczasowy);
}
// Zapamietaj, ze biezacy znak to separator
if (separator = true);
else
// Jesli poprzedni znak byl separatorem, to mamy nowy wyraz
if (separator) {
poczatek = j-i;
}
// Zapamietaj, ze mielismy znak niebedacy separatorem
separator = false;
return i;
}
}