ekufrin / tvz_c-2023

Zadaci za vjezbu i labosi sa gradera - 2023 god.
7 stars 6 forks source link

lab7 string2-funkcije A #72

Closed PetraSenicnjak closed 9 months ago

PetraSenicnjak commented 9 months ago

/Napisati C program koji za uneseni znakovni niz : 1) ispituje od koliko rečenica je sačinjen Funkcionalnost je potrebno realizirati u funkciji prototipa : int prebroji(char s); Funkcija prebroji glavnoj funkciji vrača broj pronađenih rečenica koji se zatim ispisuje na ekran. Napomena: pretpostavite da rečenica uvijek započinje velikim slovom i završava nekim od znakova interpunkcije.Rečenice su odvojene razmacima. Ako niz ima samo jednu rečenicu od korisnika je potrebno zatražiti unos novog niza uz ispis poruke "Neispravan unos.".Ako niz ima više od jedne rečenice potrebno je pozvati funkciju promijeni koja će promijeniti niz tako da svaka riječ počinje malim slovom. Ostali znakovi u rečenici ostaju nepromijenjeni! 2) mijenja sadržaj niza tako da svaka riječ počinje malim slovom Ova funkcija poziva se ukoliko se niz sastoji od više rečenica.Prototip funkcije je : char promijeni(char s); Nakon što se u funkciji promijeni napravi zamjena, povratkom u glavnu funkciju ispisuje se novi niz na ekran.

Primjer ulaza: Bok! Bok, kako si? Primjer izlaza: 2 bok! bok, kako si?

Primjer ulaza: Danas je jedan jako lijep dan. Danas je jedan jako lijep dan. Zar NE? Primjer izlaza: Neispravan unos. 2 danas je jedan jako lijep dan. zar nE?

Primjer ulaza: Danas Je jedAn jako Lijep DAN za programiranje! Zar ne? ProgramirajmO! Primjer izlaza: 3 danas je jedAn jako lijep dAN za programiranje! zar ne? programirajmO! */

define _CRT_SECURE_NO_WARNINGS

include

include

include

include

int prebroji(char s); char promijeni(char* s);

int main() { char s = (char)calloc(200, sizeof(char)); char s2 = (char)calloc(200, sizeof(char));

scanf("%[^\n]%*c", s);

int broj = prebroji(s);
while (broj == 1)
{
    printf("Neispravan unos.\n");
    scanf("%[^\n]%*c", s2);
    broj = prebroji(s2);
    strcpy(s, s2);
}

printf("%d\n", broj);
char* ss = promijeni(s);
printf("%s", ss);

return 0;

}

int prebroji(char s) { int br = 0; char tmp2 = (char)calloc(strlen(s) + 1, sizeof(char)); strcpy(tmp2, s); char tmp = strtok(tmp2, "!?."); while (tmp != NULL) { br++; tmp = strtok(NULL, "!?."); } return br; }

char promijeni(char s) { for (int i = 0; i < strlen(s); i++) { if (isupper(s[i]) && (i == 0 || s[i - 1] == ' ')) s[i] = tolower(s[i]); } return s; }

ekufrin commented 9 months ago

Dodano, zahvaljujem.