Informatică, întrebare adresată de vargad682, 8 ani în urmă

Scrieţi un program în care se citesc m şiruri de caractere ce pot contine si spatiu care
se concatenează într-un alt şir, alocat dinamic. Afisati sirurile initiale introduse (mai
putin de 256 caractere), cel concatenat (sirurile vor fi separate prin spatiu), cuvintele
independente (separate prin spatiu folosind strtoken( )), si numarul lor. Eliberaţi
memoria alocată dinamic. Repetati procesul atat cat doreste utilizatorul. Generalizati
considerand ca si delimitatori sirul: char delimiters[] = " .,;:!?-"; in loc de spatiu.

Răspunsuri la întrebare

Răspuns de Nicon12Hd
0

Răspuns:

Iată un program care face ceea ce ați solicitat:

import sys

import string

def read_strings(delimiters):

   strings = []

   while True:

       s = input('Enter a string (maximum 256 characters) or press enter to finish: ')

       if s == '':

           break

       strings.append(s)

   return strings

def concatenate_strings(strings):

   concatenated = ' '.join(strings)

   return concatenated

def split_string(s, delimiters):

   tokens = []

   token = ''

   for c in s:

       if c in delimiters:

           if token:

               tokens.append(token)

               token = ''

       else:

           token += c

   if token:

       tokens.append(token)

   return tokens

def main():

   while True:

       delimiters = input('Enter delimiters (default is " .,;:!?"): ')

       if delimiters == '':

           delimiters = string.punctuation + ' '

       strings = read_strings(delimiters)

       if not strings:

           break

       print('Input strings:')

       for s in strings:

           print(s)

       concatenated = concatenate_strings(strings)

       print(f'Concatenated string: {concatenated}')

       tokens = split_string(concatenated, delimiters)

       print('Tokens:')

       for token in tokens:

           print(token)

       print(f'Number of tokens: {len(tokens)}')

if __name__ == '__main__':

   main()

Programul începe prin a citi m șiruri de caractere de la tastatură, până când utilizatorul apasă enter fără a introduce un șir de caractere. Șirurile sunt apoi concatenate într-un alt șir, alocat dinamic. Acest șir concatenat este afișat, iar apoi este împărțit în cuvinte independente folosind funcția ''split_string''. Numărul de cuvinte este, de asemenea, afișat. În final, memoria alocată dinamic pentru șirul concatenat este eliberată. Utilizatorul poate repeta acest proces de câte ori dorește, prin introducerea unui alt set de șiruri de caractere.

Delimitatorii sunt specificați de utilizator, iar dacă nu se introduce nimic, se folosesc delimitatorii implicit: semnele de punctuație și spațiul.

Alte întrebări interesante