2024-05-22 17:33:42 +00:00
# include <stdint.h>
int strlen ( char * s ) {
char * p = s ;
while ( * p ! = ' \0 ' )
p + + ;
return p - s ;
}
void strcpy ( char * s , char * t )
{
while ( * s + + = * t + + ) ;
}
# define ALLOCSIZE 10000
static char allocbuf [ ALLOCSIZE ] ;
static char * allocp = allocbuf ;
char * alloc ( int n )
{
if ( n % 4 ! = 0 ) {
n + = 4 - ( n % 4 ) ;
}
if ( allocbuf + ALLOCSIZE - allocp > = n ) {
allocp + = n ;
return allocp - n ;
} else
return 0 ;
}
2024-05-22 18:51:39 +00:00
// def. model danych
2024-05-22 17:33:42 +00:00
2024-05-22 18:51:39 +00:00
//pre processor
# define LEN (8+2)*10
2024-05-22 17:33:42 +00:00
2024-05-22 18:51:39 +00:00
struct model {
2024-05-24 10:20:44 +00:00
char * ptr ;
2024-05-22 18:51:39 +00:00
uint32_t len ;
} ;
2024-05-22 17:33:42 +00:00
2024-05-22 19:15:48 +00:00
//alg
// prosta implementacji func. z bibl. std. strok przy uzyciu gpt3.5
//
# define NULL ((void*) 0)
//
// Funkcja pomocnicza do sprawdzania, czy znak jest wśród delimiterów
bool is_delim ( char c , const char * delims ) {
while ( * delims ) {
if ( c = = * delims ) {
return true ;
}
delims + + ;
}
return false ;
}
// Najprostsza implementacja funkcji strtok
char * simple_strtok ( char * str , const char * delims ) {
2024-05-24 16:12:13 +00:00
char * static_str = ( char * ) NULL ; // Przechowuje wskaźnik do bieżącej pozycji w ciągu
2024-05-22 19:15:48 +00:00
// Jeśli przekazano nowy ciąg, zaktualizuj static_str
2024-05-23 16:16:34 +00:00
if ( str = = NULL ) {
return ( char * ) NULL ; // str nie wskazuje na zdanie !!!
2024-05-22 19:15:48 +00:00
}
2024-05-23 16:16:34 +00:00
static_str = str ;
2024-05-22 19:15:48 +00:00
2024-05-23 16:16:34 +00:00
// " .,mpabi"
// ^
2024-05-22 19:15:48 +00:00
// Pomiń początkowe delimitery
while ( * static_str & & is_delim ( * static_str , delims ) ) {
static_str + + ;
}
// Jeśli doszliśmy do końca ciągu, zwróć NULL
if ( * static_str = = ' \0 ' ) {
return ( char * ) NULL ;
}
// Zapisz początek tokenu
char * token_start = static_str ;
2024-05-24 10:20:44 +00:00
//,. mpabi pabi
2024-05-22 19:15:48 +00:00
// Znajdź koniec tokenu
while ( * static_str & & ! is_delim ( * static_str , delims ) ) {
static_str + + ;
}
// Jeśli znaleziono delimitery, zamień je na '\0' i zaktualizuj static_str
if ( * static_str ) {
* static_str = ' \0 ' ;
static_str + + ;
}
// Zwróć początek tokenu
return token_start ;
}
2024-05-24 10:20:44 +00:00
char buf [ 1000 ] ;
2024-05-23 16:16:34 +00:00
struct model * p = ( struct model * ) buf ; //p[1]
2024-05-24 10:20:44 +00:00
//
2024-05-22 19:15:48 +00:00
////func alg
2024-05-22 18:51:39 +00:00
//in: ptr to date
//return: count of words
2024-05-24 10:20:44 +00:00
int alg ( char * ptr ) {
2024-05-22 20:25:06 +00:00
const char * delims = " ,.!?:; \n \t " ;
2024-05-22 17:33:42 +00:00
2024-05-24 10:20:44 +00:00
int pos = 0 ;
2024-05-22 18:51:39 +00:00
2024-05-25 08:38:43 +00:00
while ( char * token = simple_strtok ( ptr , delims ) ) {
2024-05-23 16:16:34 +00:00
2024-05-24 10:20:44 +00:00
p [ pos ] . ptr = token ;
//p[pos].len = strlen(token);
p [ pos ] . len = pos ;
2024-05-25 08:38:43 +00:00
token = token + strlen ( token ) + 1 ;
2024-05-24 10:20:44 +00:00
+ + pos ;
}
2024-05-23 16:16:34 +00:00
2024-05-24 10:20:44 +00:00
return pos ;
2024-05-22 20:25:06 +00:00
}
2024-05-22 18:51:39 +00:00
2024-05-24 10:20:44 +00:00
/*
struct model {
char * str ;
uint32_t len ;
} tab [ 10 ] ;
*/
2024-05-22 17:33:42 +00:00
2024-05-24 10:20:44 +00:00
int main ( ) {
// Seccess is often
// ^
char * str = " Success is often defined as the ability to reach your goals in life, whatever those goals may be. In some ways, a better word for success might be attainment, accomplishment, or progress. It is not necessarily a destination but a journey that helps develop the skills and resources you need to thrive. " ;
/*
struct model * ptr = ( struct model * ) alloc ( LEN ) ;
if ( ptr ! = ( struct model * ) NULL ) {
ptr - > str = alloc ( strlen ( ( char * ) str ) + 1 ) ;
if ( ptr - > str ! = ( char * ) NULL ) {
strcpy ( ptr - > str , ( char * ) str ) ;
ptr - > len = strlen ( ptr - > str ) ;
int8_t count = alg ( ptr - > str ) ;
}
}
*/
2024-05-24 16:12:13 +00:00
int w = alg ( str ) ;
2024-05-23 16:16:34 +00:00
asm ( " nop " ) ;
2024-05-22 17:33:42 +00:00
return 1 ;
}