funkcja alg + main
This commit is contained in:
parent
0664e93e2a
commit
6836e07a9b
Binary file not shown.
105
cpp/_rvmain.cpp
105
cpp/_rvmain.cpp
|
@ -31,35 +31,112 @@ char *alloc(int n)
|
|||
return 0;
|
||||
}
|
||||
|
||||
// def. model danych
|
||||
|
||||
//funkcja lokuje pamiec dla kazdego slowa.
|
||||
//pre processor
|
||||
#define LEN (8+2)*10
|
||||
|
||||
struct model {
|
||||
char * str;
|
||||
uint32_t len ;
|
||||
};
|
||||
|
||||
|
||||
//alg
|
||||
// prosta implementacji func. z bibl. std. strok przy uzyciu gpt3.5
|
||||
//
|
||||
//wskaznik p1 wskazuje na pierwsza litera slowa,
|
||||
//liczy ilosc slowa i alokuje pamiec dla niego.
|
||||
|
||||
#define NULL ((void*) 0)
|
||||
|
||||
void alg (char *s) {
|
||||
//
|
||||
// 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;
|
||||
}
|
||||
|
||||
char count;
|
||||
// Najprostsza implementacja funkcji strtok
|
||||
char *simple_strtok(char *str, const char *delims) {
|
||||
static char *static_str = (char *) NULL; // Przechowuje wskaźnik do bieżącej pozycji w ciągu
|
||||
|
||||
for (int8_t c = 0; c <= strlen(s); c++) {
|
||||
// Jeśli przekazano nowy ciąg, zaktualizuj static_str
|
||||
if (str != NULL) {
|
||||
static_str = str;
|
||||
}
|
||||
|
||||
if (s[c] != 0x20 && s[c] != '\0') {
|
||||
// Jeśli static_str jest NULL, zwróć NULL
|
||||
if (static_str == NULL) {
|
||||
return (char *) NULL;
|
||||
}
|
||||
|
||||
// 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;
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
////func alg
|
||||
//in: ptr to date
|
||||
//return: count of words
|
||||
int alg (const char * ptr) {
|
||||
|
||||
char bufer[ALLOCSIZE];
|
||||
strcpy(bufer, (char *)ptr);
|
||||
|
||||
const char *delims = " ,.!?:;\n\t";
|
||||
|
||||
int8_t count = 0;
|
||||
|
||||
char *token = simple_strtok(bufer, delims);
|
||||
while (token != (char *)NULL) {
|
||||
count++;
|
||||
} else {
|
||||
char *p1 = &s[++c];
|
||||
alloc (count);
|
||||
count = 0;
|
||||
token = simple_strtok((char *)NULL, delims);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
|
||||
char *str = "If wantered relation no surprise of all";
|
||||
|
||||
alg(str);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,142 @@
|
|||
#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;
|
||||
}
|
||||
|
||||
// def. model danych
|
||||
|
||||
//pre processor
|
||||
#define LEN (8+2)*10
|
||||
|
||||
struct model {
|
||||
char * str;
|
||||
uint32_t len ;
|
||||
};
|
||||
|
||||
|
||||
//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) {
|
||||
static char *static_str = (char *) NULL; // Przechowuje wskaźnik do bieżącej pozycji w ciągu
|
||||
|
||||
// Jeśli przekazano nowy ciąg, zaktualizuj static_str
|
||||
if (str != NULL) {
|
||||
static_str = str;
|
||||
}
|
||||
|
||||
// Jeśli static_str jest NULL, zwróć NULL
|
||||
if (static_str == NULL) {
|
||||
return (char *) NULL;
|
||||
}
|
||||
|
||||
// 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;
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
////func alg
|
||||
//in: ptr to date
|
||||
//return: count of words
|
||||
int alg (const char * ptr) {
|
||||
|
||||
char bufer[ALLOCSIZE];
|
||||
strcpy(bufer, (char *)ptr);
|
||||
|
||||
const char *delims = " ,.!?:;\n\t";
|
||||
|
||||
int8_t count = 0;
|
||||
|
||||
char *token = simple_strtok(bufer, delims);
|
||||
while (token != (char *)NULL) {
|
||||
count++;
|
||||
token = simple_strtok((char *)NULL, delims);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
int main() {
|
||||
|
||||
const char *str = "If wantered relation no surprise of all";
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
Loading…
Reference in New Issue