feat: great beautiful fixes

This commit is contained in:
Krzysztof Rudnicki 2026-02-20 00:37:32 +01:00
parent aae75807a2
commit 67da5c4fb9
26 changed files with 1514 additions and 1565 deletions

View File

@ -9,11 +9,11 @@
* ./vocabulary_curve test.txt 50
*/
#include <ctype.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>
#define MAX_WORD_LEN 64
#define MAX_WORDS 500000
@ -21,7 +21,8 @@
#define HASH_SIZE 200003 /* Prime number for better distribution */
/* Word entry for hash table */
typedef struct WordEntry {
typedef struct WordEntry
{
char word[MAX_WORD_LEN];
int count;
int rank; /* 1-indexed rank by frequency (1 = most common) */
@ -38,42 +39,50 @@ static WordEntry *word_sequence[MAX_WORDS];
static int num_words = 0;
/* Result for each excerpt length */
typedef struct {
typedef struct
{
int excerpt_length;
int min_vocab_needed;
int start_pos; /* Start position in word_sequence */
} ExcerptResult;
/* Simple hash function */
static unsigned int hash_word(const char *word) {
static unsigned int hash_word(const char *word)
{
unsigned int hash = 5381;
int c;
while ((c = *word++)) {
while ((c = *word++))
{
hash = ((hash << 5) + hash) + c;
}
return hash % HASH_SIZE;
}
/* Find or create word entry */
static WordEntry *get_or_create_word(const char *word) {
static WordEntry *get_or_create_word(const char *word)
{
unsigned int h = hash_word(word);
WordEntry *entry = hash_table[h];
while (entry) {
if (strcmp(entry->word, word) == 0) {
while (entry)
{
if (strcmp(entry->word, word) == 0)
{
return entry;
}
entry = entry->next;
}
/* Create new entry */
if (num_unique_words >= MAX_UNIQUE_WORDS) {
if (num_unique_words >= MAX_UNIQUE_WORDS)
{
fprintf(stderr, "Too many unique words\n");
exit(1);
}
entry = malloc(sizeof(WordEntry));
if (!entry) {
if (!entry)
{
fprintf(stderr, "Memory allocation failed\n");
exit(1);
}
@ -91,21 +100,22 @@ static WordEntry *get_or_create_word(const char *word) {
}
/* Compare function for sorting by frequency (descending) */
static int compare_by_count(const void *a, const void *b) {
static int compare_by_count(const void *a, const void *b)
{
const WordEntry *wa = *(const WordEntry **)a;
const WordEntry *wb = *(const WordEntry **)b;
return wb->count - wa->count; /* Descending */
}
/* Check if character is part of a word */
static bool is_word_char(int c) {
return isalnum(c) || c == '_' || (unsigned char)c >= 128;
}
static bool is_word_char(int c) { return isalnum(c) || c == '_' || (unsigned char)c >= 128; }
/* Read and process file */
static bool process_file(const char *filename) {
static bool process_file(const char *filename)
{
FILE *fp = fopen(filename, "r");
if (!fp) {
if (!fp)
{
fprintf(stderr, "Cannot open file: %s\n", filename);
return false;
}
@ -114,18 +124,24 @@ static bool process_file(const char *filename) {
int word_len = 0;
int c;
while ((c = fgetc(fp)) != EOF) {
if (is_word_char(c)) {
if (word_len < MAX_WORD_LEN - 1) {
while ((c = fgetc(fp)) != EOF)
{
if (is_word_char(c))
{
if (word_len < MAX_WORD_LEN - 1)
{
word[word_len++] = tolower(c);
}
} else if (word_len > 0) {
}
else if (word_len > 0)
{
word[word_len] = '\0';
WordEntry *entry = get_or_create_word(word);
entry->count++;
if (num_words >= MAX_WORDS) {
if (num_words >= MAX_WORDS)
{
fprintf(stderr, "Too many words in file\n");
fclose(fp);
return false;
@ -139,12 +155,14 @@ static bool process_file(const char *filename) {
}
/* Handle last word if file doesn't end with whitespace */
if (word_len > 0) {
if (word_len > 0)
{
word[word_len] = '\0';
WordEntry *entry = get_or_create_word(word);
entry->count++;
if (num_words < MAX_WORDS) {
if (num_words < MAX_WORDS)
{
word_sequence[num_words++] = entry;
}
}
@ -154,7 +172,8 @@ static bool process_file(const char *filename) {
}
/* Assign ranks based on frequency */
static void assign_ranks(void) {
static void assign_ranks(void)
{
/* Sort all_entries by frequency (this doesn't affect word_sequence) */
qsort(all_entries, num_unique_words, sizeof(WordEntry *), compare_by_count);
@ -162,13 +181,19 @@ static void assign_ranks(void) {
* Words with same frequency get same rank.
* Next rank is current_position + 1 (skipping numbers).
* Example: counts 5,3,3,2 -> ranks 1,2,2,4 (not 1,2,3,4) */
for (int i = 0; i < num_unique_words; i++) {
if (i == 0) {
for (int i = 0; i < num_unique_words; i++)
{
if (i == 0)
{
all_entries[i]->rank = 1;
} else if (all_entries[i]->count == all_entries[i-1]->count) {
}
else if (all_entries[i]->count == all_entries[i - 1]->count)
{
/* Same frequency as previous word - same rank */
all_entries[i]->rank = all_entries[i - 1]->rank;
} else {
}
else
{
/* Different frequency - rank is position + 1 */
all_entries[i]->rank = i + 1;
}
@ -176,7 +201,8 @@ static void assign_ranks(void) {
}
/* Analyze excerpt and return max rank needed */
static int analyze_excerpt(int start, int length) {
static int analyze_excerpt(int start, int length)
{
/* Track which entries we've seen using a simple visited array */
/* We use the rank field is already assigned, so we can check uniqueness */
static bool seen_rank[MAX_UNIQUE_WORDS + 1];
@ -184,13 +210,16 @@ static int analyze_excerpt(int start, int length) {
int max_rank = 0;
for (int i = start; i < start + length; i++) {
for (int i = start; i < start + length; i++)
{
WordEntry *entry = word_sequence[i];
int rank = entry->rank;
if (!seen_rank[rank]) {
if (!seen_rank[rank])
{
seen_rank[rank] = true;
if (rank > max_rank) {
if (rank > max_rank)
{
max_rank = rank;
}
}
@ -200,16 +229,20 @@ static int analyze_excerpt(int start, int length) {
}
/* Find optimal excerpts for each length */
static void find_optimal_excerpts(int max_length, ExcerptResult *results) {
for (int length = 1; length <= max_length && length <= num_words; length++) {
static void find_optimal_excerpts(int max_length, ExcerptResult *results)
{
for (int length = 1; length <= max_length && length <= num_words; length++)
{
int best_vocab = num_unique_words + 1;
int best_start = 0;
/* Slide window through text */
for (int start = 0; start <= num_words - length; start++) {
for (int start = 0; start <= num_words - length; start++)
{
int vocab_needed = analyze_excerpt(start, length);
if (vocab_needed < best_vocab) {
if (vocab_needed < best_vocab)
{
best_vocab = vocab_needed;
best_start = start;
}
@ -222,33 +255,42 @@ static void find_optimal_excerpts(int max_length, ExcerptResult *results) {
}
/* Print excerpt words */
static void print_excerpt(int start, int length) {
for (int i = start; i < start + length; i++) {
if (i > start) printf(" ");
static void print_excerpt(int start, int length)
{
for (int i = start; i < start + length; i++)
{
if (i > start)
printf(" ");
printf("%s", word_sequence[i]->word);
}
}
/* Print words needed (sorted by rank) */
static void print_words_needed(int start, int length) {
static void print_words_needed(int start, int length)
{
/* Collect unique entries */
static WordEntry *unique_entries[MAX_UNIQUE_WORDS];
static bool seen_rank[MAX_UNIQUE_WORDS + 1];
memset(seen_rank, 0, (num_unique_words + 1) * sizeof(bool));
int count = 0;
for (int i = start; i < start + length; i++) {
for (int i = start; i < start + length; i++)
{
WordEntry *entry = word_sequence[i];
if (!seen_rank[entry->rank]) {
if (!seen_rank[entry->rank])
{
seen_rank[entry->rank] = true;
unique_entries[count++] = entry;
}
}
/* Sort by rank (simple bubble sort - small arrays) */
for (int i = 0; i < count - 1; i++) {
for (int j = i + 1; j < count; j++) {
if (unique_entries[i]->rank > unique_entries[j]->rank) {
for (int i = 0; i < count - 1; i++)
{
for (int j = i + 1; j < count; j++)
{
if (unique_entries[i]->rank > unique_entries[j]->rank)
{
WordEntry *tmp = unique_entries[i];
unique_entries[i] = unique_entries[j];
unique_entries[j] = tmp;
@ -257,14 +299,17 @@ static void print_words_needed(int start, int length) {
}
/* Print */
for (int i = 0; i < count; i++) {
if (i > 0) printf(", ");
for (int i = 0; i < count; i++)
{
if (i > 0)
printf(", ");
printf("%s(#%d)", unique_entries[i]->word, unique_entries[i]->rank);
}
}
/* Print results */
static void print_results(ExcerptResult *results, int max_length) {
static void print_results(ExcerptResult *results, int max_length)
{
printf("======================================================================\n");
printf("VOCABULARY LEARNING CURVE\n");
printf("======================================================================\n");
@ -279,13 +324,16 @@ static void print_results(ExcerptResult *results, int max_length) {
int prev_vocab = 0;
int actual_max = max_length;
if (actual_max > num_words) actual_max = num_words;
if (actual_max > num_words)
actual_max = num_words;
for (int i = 0; i < actual_max; i++) {
for (int i = 0; i < actual_max; i++)
{
ExcerptResult *r = &results[i];
printf("\n[Length %d] Vocab needed: %d", r->excerpt_length, r->min_vocab_needed);
if (r->min_vocab_needed > prev_vocab) {
if (r->min_vocab_needed > prev_vocab)
{
printf(" (+%d)", r->min_vocab_needed - prev_vocab);
}
printf("\n");
@ -303,7 +351,8 @@ static void print_results(ExcerptResult *results, int max_length) {
printf("\n----------------------------------------------------------------------\n");
if (actual_max > 0) {
if (actual_max > 0)
{
ExcerptResult *final = &results[actual_max - 1];
printf("\nTo understand a %d-word excerpt,\n", final->excerpt_length);
printf("you need to learn at minimum %d top words.\n", final->min_vocab_needed);
@ -311,17 +360,22 @@ static void print_results(ExcerptResult *results, int max_length) {
}
/* Free memory */
static void cleanup(void) {
for (int i = 0; i < num_unique_words; i++) {
static void cleanup(void)
{
for (int i = 0; i < num_unique_words; i++)
{
free(all_entries[i]);
}
}
/* Dump all vocabulary with ranks (for Python integration) */
static void dump_vocabulary(int max_rank) {
static void dump_vocabulary(int max_rank)
{
printf("VOCAB_DUMP_START\n");
for (int i = 0; i < num_unique_words; i++) {
if (all_entries[i]->rank <= max_rank) {
for (int i = 0; i < num_unique_words; i++)
{
if (all_entries[i]->rank <= max_rank)
{
printf("%s;%d\n", all_entries[i]->word, all_entries[i]->rank);
}
}
@ -329,20 +383,26 @@ static void dump_vocabulary(int max_rank) {
}
/* Find longest excerpt using only top N words (inverse mode) */
static void find_longest_excerpt(int max_vocab) {
static void find_longest_excerpt(int max_vocab)
{
/* Sliding window: find longest contiguous sequence where all words have rank <= max_vocab */
int best_start = 0;
int best_length = 0;
int left = 0;
for (int right = 0; right < num_words; right++) {
for (int right = 0; right < num_words; right++)
{
/* If current word is outside our vocabulary, move left past it */
if (word_sequence[right]->rank > max_vocab) {
if (word_sequence[right]->rank > max_vocab)
{
left = right + 1;
} else {
}
else
{
/* Current window [left, right] is valid */
int length = right - left + 1;
if (length > best_length) {
if (length > best_length)
{
best_length = length;
best_start = left;
}
@ -361,10 +421,13 @@ static void find_longest_excerpt(int max_vocab) {
printf("----------------------------------------------------------------------\n");
printf("\n");
if (best_length == 0) {
if (best_length == 0)
{
printf("No valid excerpt found with top %d words.\n", max_vocab);
printf("The text may require rarer words from the very beginning.\n");
} else {
}
else
{
printf("LONGEST EXCERPT: %d words\n", best_length);
printf("Position: words %d to %d\n", best_start + 1, best_start + best_length);
printf("\n");
@ -376,8 +439,10 @@ static void find_longest_excerpt(int max_vocab) {
/* Find the rarest word in the excerpt */
int max_rank_used = 0;
const char *rarest_word = NULL;
for (int i = best_start; i < best_start + best_length; i++) {
if (word_sequence[i]->rank > max_rank_used) {
for (int i = best_start; i < best_start + best_length; i++)
{
if (word_sequence[i]->rank > max_rank_used)
{
max_rank_used = word_sequence[i]->rank;
rarest_word = word_sequence[i]->word;
}
@ -388,8 +453,10 @@ static void find_longest_excerpt(int max_vocab) {
static bool seen_rank[MAX_UNIQUE_WORDS + 1];
memset(seen_rank, 0, (num_unique_words + 1) * sizeof(bool));
int unique_count = 0;
for (int i = best_start; i < best_start + best_length; i++) {
if (!seen_rank[word_sequence[i]->rank]) {
for (int i = best_start; i < best_start + best_length; i++)
{
if (!seen_rank[word_sequence[i]->rank])
{
seen_rank[word_sequence[i]->rank] = true;
unique_count++;
}
@ -400,18 +467,23 @@ static void find_longest_excerpt(int max_vocab) {
printf("\n----------------------------------------------------------------------\n");
}
int main(int argc, char *argv[]) {
if (argc < 2) {
int main(int argc, char *argv[])
{
if (argc < 2)
{
fprintf(stderr, "Usage: %s <file.txt> [options]\n", argv[0]);
fprintf(stderr, "\nModes:\n");
fprintf(stderr, " (default) Find minimum vocab needed for each excerpt length\n");
fprintf(stderr, " --max-vocab N INVERSE: Find longest excerpt using only top N words\n");
fprintf(stderr,
" --max-vocab N INVERSE: Find longest excerpt using only top N words\n");
fprintf(stderr, "\nOptions:\n");
fprintf(stderr, " max_length Maximum excerpt length to analyze (default: 30)\n");
fprintf(stderr, " --dump-vocab [N] Output all words with ranks up to N\n");
fprintf(stderr, "\nExamples:\n");
fprintf(stderr, " %s book.txt 50 # Analyze excerpts up to 50 words\n", argv[0]);
fprintf(stderr, " %s book.txt --max-vocab 500 # Find longest excerpt with top 500 words\n", argv[0]);
fprintf(stderr, " %s book.txt 50 # Analyze excerpts up to 50 words\n",
argv[0]);
fprintf(stderr, " %s book.txt --max-vocab 500 # Find longest excerpt with top 500 words\n",
argv[0]);
return 1;
}
@ -422,27 +494,40 @@ int main(int argc, char *argv[]) {
int max_vocab_mode = 0; /* 0 = normal mode, >0 = inverse mode with this vocab limit */
/* Parse arguments */
for (int i = 2; i < argc; i++) {
if (strcmp(argv[i], "--dump-vocab") == 0) {
for (int i = 2; i < argc; i++)
{
if (strcmp(argv[i], "--dump-vocab") == 0)
{
dump_vocab = true;
if (i + 1 < argc && argv[i + 1][0] != '-') {
if (i + 1 < argc && argv[i + 1][0] != '-')
{
dump_max_rank = atoi(argv[++i]);
}
} else if (strcmp(argv[i], "--max-vocab") == 0) {
if (i + 1 < argc) {
}
else if (strcmp(argv[i], "--max-vocab") == 0)
{
if (i + 1 < argc)
{
max_vocab_mode = atoi(argv[++i]);
if (max_vocab_mode < 1) {
if (max_vocab_mode < 1)
{
fprintf(stderr, "Error: --max-vocab requires a positive number\n");
return 1;
}
} else {
}
else
{
fprintf(stderr, "Error: --max-vocab requires a number\n");
return 1;
}
} else if (argv[i][0] != '-') {
}
else if (argv[i][0] != '-')
{
max_length = atoi(argv[i]);
if (max_length < 1) max_length = 1;
if (max_length > 1000) max_length = 1000;
if (max_length < 1)
max_length = 1;
if (max_length > 1000)
max_length = 1000;
}
}
@ -450,11 +535,13 @@ int main(int argc, char *argv[]) {
memset(hash_table, 0, sizeof(hash_table));
/* Process file */
if (!process_file(filename)) {
if (!process_file(filename))
{
return 1;
}
if (num_words == 0) {
if (num_words == 0)
{
fprintf(stderr, "No words found in file\n");
return 1;
}
@ -463,12 +550,15 @@ int main(int argc, char *argv[]) {
assign_ranks();
/* Inverse mode: find longest excerpt with limited vocabulary */
if (max_vocab_mode > 0) {
if (max_vocab_mode > 0)
{
find_longest_excerpt(max_vocab_mode);
/* Dump vocabulary if requested */
if (dump_vocab) {
if (dump_max_rank == 0) dump_max_rank = max_vocab_mode;
if (dump_vocab)
{
if (dump_max_rank == 0)
dump_max_rank = max_vocab_mode;
dump_vocabulary(dump_max_rank);
}
@ -478,7 +568,8 @@ int main(int argc, char *argv[]) {
/* Normal mode: find optimal excerpts */
ExcerptResult *results = malloc(max_length * sizeof(ExcerptResult));
if (!results) {
if (!results)
{
fprintf(stderr, "Memory allocation failed\n");
cleanup();
return 1;
@ -490,12 +581,15 @@ int main(int argc, char *argv[]) {
print_results(results, max_length);
/* Dump vocabulary if requested */
if (dump_vocab) {
if (dump_vocab)
{
/* If no max_rank specified, use the max from the excerpt */
if (dump_max_rank == 0 && max_length > 0) {
if (dump_max_rank == 0 && max_length > 0)
{
dump_max_rank = results[max_length - 1].min_vocab_needed;
}
if (dump_max_rank > 0) {
if (dump_max_rank > 0)
{
dump_vocabulary(dump_max_rank);
}
}

View File

@ -1,25 +1,24 @@
#include <math.h>
#include <iostream>
#include <iomanip>
#include <iostream>
#include <math.h>
const unsigned long long int ITERATIONS = 10000;
long double getPi()
{
long double getPi() {
long double pi = 4;
bool negative = 1;
for(unsigned int i = 3; i < ITERATIONS; i += 2)
{
if(negative) pi -= 4.0 / i;
else pi += 4.0 / i;
for (unsigned int i = 3; i < ITERATIONS; i += 2) {
if (negative)
pi -= 4.0 / i;
else
pi += 4.0 / i;
negative = !negative;
}
std::cout << std::setprecision(2000) << pi << std::endl;
return pi;
}
int main()
{
int main() {
getPi();
return 0;
}

View File

@ -5,7 +5,8 @@ const std::vector <std::string> ATUTY = {"BA", "Trefl", "Karo", "Kier", "Pik"};
const bool A_ID = 0;
const bool B_ID = 1;
const std::vector<std::string> GRACZE = {};
const std::vector <std::string> PO_PARTII {"Nikt", GRACZE[A_ID], GRACZE[B_ID], "Obaj Gracze"};
const std::vector<std::string> PO_PARTII{"Nikt", GRACZE[A_ID], GRACZE[B_ID],
"Obaj Gracze"};
const int DOMYSLNE_LEWY = 6;
const int BEZ_ATUTU_ID = 1;
const int TREFL_ID = 2;
@ -19,56 +20,48 @@ const int MAKSYMALNY_LEW = 7;
const int MINIMALNY_LEW = 1;
const int ILOSC_LEW = 13;
void print(const std::string s)
{
std::cout << s << std::endl;
}
void print(const std::string s) { std::cout << s << std::endl; }
void tabela(std::vector <int> punktyA, std::vector <int> punktyB)
{
void tabela(std::vector<int> punktyA, std::vector<int> punktyB) {
std::cout << "Numer Gry" << " Po Partii" << " " << GRACZE[A_ID] << " " << GRACZE[B_ID] << std::endl;
for(int i = 0; i < punktyA.size(); i++)
{
std::cout << "Numer Gry" << " Po Partii" << " " << GRACZE[A_ID]
<< " " << GRACZE[B_ID] << std::endl;
for (int i = 0; i < punktyA.size(); i++) {
std::cout << i + 1 << " " << PO_PARTII[i % CYKL_PO_PARTII] << " " << punktyA[i] << " " << punktyB[i] << std::endl;
std::cout << i + 1 << " " << PO_PARTII[i % CYKL_PO_PARTII]
<< " " << punktyA[i] << " "
<< punktyB[i] << std::endl;
}
}
void lwyAtut(int lwy, int atut)
{
if(lwy == SZLEMIK)
{
void lwyAtut(int lwy, int atut) {
if (lwy == SZLEMIK) {
print("Wybrano szlemik!");
return;
}
if(lwy == SZLEM)
{
if (lwy == SZLEM) {
print("Wybrano szlema!");
return;
}
std::cout << "Wybrano kontrakt: " << lwy << " " << ATUTY[atut - 1] << std::endl;
std::cout << "Wybrano kontrakt: " << lwy << " " << ATUTY[atut - 1]
<< std::endl;
}
int zagraneLwy()
{
int zagraneLwy() {
int lwy;
bool flagaLwy;
do
{
do {
flagaLwy = 0;
print("Ile lew?");
char lwyC;
std::cin >> lwyC;
lwy = lwyC - '0';
if(lwy < MINIMALNY_LEW)
{
if (lwy < MINIMALNY_LEW) {
print("Podales za malo lew!");
flagaLwy = 1;
}
if(lwy > MAKSYMALNY_LEW)
{
if (lwy > MAKSYMALNY_LEW) {
print("Podales za duzo lew!");
flagaLwy = 1;
}
@ -76,13 +69,12 @@ int zagraneLwy()
return lwy;
}
int zagranyAtut(int lwy)
{
int zagranyAtut(int lwy) {
int atut;
bool flagaAtut;
if(lwy > 6) return 1;
do
{
if (lwy > 6)
return 1;
do {
flagaAtut = 0;
print("Jaki atut?");
print("1 - BA");
@ -93,8 +85,7 @@ int zagranyAtut(int lwy)
char atutC;
std::cin >> atutC;
atut = atutC - '0';
if(atut < 1 || atut > 5)
{
if (atut < 1 || atut > 5) {
print("Wybrales zla liczbe!");
flagaAtut = 1;
}
@ -102,8 +93,7 @@ int zagranyAtut(int lwy)
return atut;
}
bool zagranaKontra()
{
bool zagranaKontra() {
char kontraC = '0';
print("Czy zostala zagrana kontra?");
print("1 - TAK");
@ -113,8 +103,7 @@ bool zagranaKontra()
return kontraBool;
}
bool zagranaRekontra()
{
bool zagranaRekontra() {
char rekontraC = '0';
print("Czy zostala zagrana rekontra?");
print("1 - TAK");
@ -124,20 +113,20 @@ bool zagranaRekontra()
return rekontraBool;
}
void stanGry(int lwy, int atut, bool kontraBool, bool rekontraBool, int ktoraGra, int ktoKontrakt)
{
void stanGry(int lwy, int atut, bool kontraBool, bool rekontraBool,
int ktoraGra, int ktoKontrakt) {
std::cout << "Kontrakt Wygrali: " << GRACZE[ktoKontrakt] << std::endl;
lwyAtut(lwy, atut);
if(kontraBool)
{
if(rekontraBool) print("Zostala zagrana REkontra!");
else print("Zostala zagrana Kontra!");
if (kontraBool) {
if (rekontraBool)
print("Zostala zagrana REkontra!");
else
print("Zostala zagrana Kontra!");
}
std::cout << "Po partii sa: " << PO_PARTII[ktoraGra % 4] << std::endl;
}
int ktoKontrakt()
{
int ktoKontrakt() {
char ktoKontraktC;
print("Kto wygral Kontrakt?");
std::cout << "1. " << GRACZE[A_ID] << std::endl;
@ -148,8 +137,7 @@ int ktoKontrakt()
return ktoKontraktI;
}
int ileWpadek()
{
int ileWpadek() {
std::string ileWpadekS;
print("ile lew wygrali obroncy?");
std::cin >> ileWpadekS;
@ -157,225 +145,214 @@ int ileWpadek()
return ileWpadek;
}
void punkty(std::vector <int> &punktyA, std::vector <int> &punktyB, int lwy, int atut, bool kontraBool, bool rekontraBool,
int ktoraGra, int ktoKontraktI, bool rozgrywajacyWygral, int wpadki)
{
void punkty(std::vector<int> &punktyA, std::vector<int> &punktyB, int lwy,
int atut, bool kontraBool, bool rekontraBool, int ktoraGra,
int ktoKontraktI, bool rozgrywajacyWygral, int wpadki) {
int sumaPunktow = 0;
if(rozgrywajacyWygral)
{
if (rozgrywajacyWygral) {
int zdobyteLewy = ILOSC_LEW - wpadki - DOMYSLNE_LEWY;
int nadrobki = zdobyteLewy - lwy;
int punktyZaLew;
std::cout << "wartosc kontraBool: " << kontraBool << "; wartosc rekontraBool: " << rekontraBool << std::endl;
std::cout << "wartosc kontraBool: " << kontraBool
<< "; wartosc rekontraBool: " << rekontraBool << std::endl;
// Lewy Deklarowane
if(atut == TREFL_ID || atut == KARO_ID)
{
if (atut == TREFL_ID || atut == KARO_ID) {
print("kontrakt TREFL lub KARO kazda karta kontraktowa za 20");
punktyZaLew = 20;
if(kontraBool)
{
if (kontraBool) {
print("kontra TREFL lub KARO, kazda karta kontraktowa za 40");
punktyZaLew = 40;
}
if(rekontraBool)
{
if (rekontraBool) {
print("rekontra TREFL lub KARO, kazda karta kontraktowa za 80");
punktyZaLew = 80;
}
std::cout << "Ilosc lew w kontrakcie: " << lwy << " do punktow dodaje sie " << lwy * punktyZaLew << std::endl;
std::cout << "Ilosc lew w kontrakcie: " << lwy
<< " do punktow dodaje sie " << lwy * punktyZaLew << std::endl;
sumaPunktow += (lwy * punktyZaLew);
}
if(atut == KIER_ID || atut == PIK_ID)
{
if (atut == KIER_ID || atut == PIK_ID) {
print("kontrakt KIER lub PIK, kazda kontraktowa 30");
punktyZaLew = 30;
if(kontraBool)
{
if (kontraBool) {
print("kontra KIER lub PIK, kazda kontraktowa za 60");
punktyZaLew = 60;
}
if(rekontraBool)
{
if (rekontraBool) {
print("rekontra KIER lub PIK, kazda kontraktowa za 120");
punktyZaLew = 120;
}
std::cout << "Ilosc lew w kontrakcie: " << lwy << " do punktow dodaje sie " << lwy * punktyZaLew << std::endl;
std::cout << "Ilosc lew w kontrakcie: " << lwy
<< " do punktow dodaje sie " << lwy * punktyZaLew << std::endl;
sumaPunktow += (lwy * punktyZaLew);
}
if(atut == BEZ_ATUTU_ID)
{
if (atut == BEZ_ATUTU_ID) {
punktyZaLew = 30;
print("kontrakt BEZ_ATUTU, pierwsza lewa za 40, kazda nastepna za 30");
sumaPunktow = 40;
if(kontraBool)
{
if (kontraBool) {
print("kontrakt BEZ_ATUTU, pierwsza lewa za 80, kazda nastepna za 60");
sumaPunktow = 80;
punktyZaLew = 60;
}
if(rekontraBool)
{
print("kontrakt BEZ_ATUTU, pierwsza lewa za 160, kazda nastepna za 120");
if (rekontraBool) {
print(
"kontrakt BEZ_ATUTU, pierwsza lewa za 160, kazda nastepna za 120");
sumaPunktow = 160;
punktyZaLew = 120;
}
sumaPunktow += ((lwy - 1) * punktyZaLew);
}
bool czyRozgrywajacyPoPartii = ( ( (ktoraGra % CYKL_PO_PARTII) - 1) == ktoKontraktI || ktoraGra % CYKL_PO_PARTII == 3);
bool czyRozgrywajacyPoPartii =
(((ktoraGra % CYKL_PO_PARTII) - 1) == ktoKontraktI ||
ktoraGra % CYKL_PO_PARTII == 3);
if(lwy == SZLEMIK)
{
if(czyRozgrywajacyPoPartii) sumaPunktow += 750;
else sumaPunktow += 500;
if (lwy == SZLEMIK) {
if (czyRozgrywajacyPoPartii)
sumaPunktow += 750;
else
sumaPunktow += 500;
}
if(lwy == SZLEM)
{
if(czyRozgrywajacyPoPartii) sumaPunktow += 1500;
else sumaPunktow += 1000;
if (lwy == SZLEM) {
if (czyRozgrywajacyPoPartii)
sumaPunktow += 1500;
else
sumaPunktow += 1000;
}
bool dograna = (sumaPunktow >= 100);
if(dograna)
{
if(czyRozgrywajacyPoPartii) sumaPunktow += 500;
else sumaPunktow += 300;
}else sumaPunktow += 50;
if (dograna) {
if (czyRozgrywajacyPoPartii)
sumaPunktow += 500;
else
sumaPunktow += 300;
} else
sumaPunktow += 50;
// Nadrobki
if(!kontraBool && !rekontraBool)
{
if (!kontraBool && !rekontraBool) {
int punktyZaNadrobki = punktyZaLew;
sumaPunktow += nadrobki * punktyZaNadrobki;
}
if(kontraBool && !rekontraBool)
{
if (kontraBool && !rekontraBool) {
int punktyZaNadrobki = 100;
if(czyRozgrywajacyPoPartii) punktyZaNadrobki = 200;
if (czyRozgrywajacyPoPartii)
punktyZaNadrobki = 200;
sumaPunktow += nadrobki * punktyZaNadrobki;
}
if(kontraBool && rekontraBool)
{
if (kontraBool && rekontraBool) {
int punktyZaNadrobki = 200;
if(czyRozgrywajacyPoPartii) punktyZaNadrobki = 400;
if (czyRozgrywajacyPoPartii)
punktyZaNadrobki = 400;
sumaPunktow += nadrobki * punktyZaNadrobki;
}
if(kontraBool && !rekontraBool) sumaPunktow += 50;
if (kontraBool && !rekontraBool)
sumaPunktow += 50;
if(kontraBool && rekontraBool) sumaPunktow += 100;
if (kontraBool && rekontraBool)
sumaPunktow += 100;
std::cout << "Rozgrywajacy zdobyl: " << sumaPunktow << std::endl;
if(ktoKontraktI == A_ID)
{
if (ktoKontraktI == A_ID) {
punktyA.push_back(sumaPunktow);
punktyB.push_back(0);
}
else
{
} else {
punktyB.push_back(sumaPunktow);
punktyA.push_back(0);
}
return;
}else
{
} else {
int zebraneLewy = ILOSC_LEW - wpadki;
int lewyWpadkowe = (lwy + DOMYSLNE_LEWY) - zebraneLewy;
int sumaPunktow = 0;
bool broniacyPoPartii = ( ((ktoraGra % CYKL_PO_PARTII) - 1) == !ktoKontraktI || ktoraGra % CYKL_PO_PARTII == 3);
if(broniacyPoPartii)
{
bool broniacyPoPartii =
(((ktoraGra % CYKL_PO_PARTII) - 1) == !ktoKontraktI ||
ktoraGra % CYKL_PO_PARTII == 3);
if (broniacyPoPartii) {
if(!kontraBool && !rekontraBool)
{
if (!kontraBool && !rekontraBool) {
sumaPunktow = 100;
for(int i = 1; i < lewyWpadkowe; i++)
{
if(i < 4) sumaPunktow += 100;
else sumaPunktow += 0;
for (int i = 1; i < lewyWpadkowe; i++) {
if (i < 4)
sumaPunktow += 100;
else
sumaPunktow += 0;
}
}
if(kontraBool && !rekontraBool)
{
if (kontraBool && !rekontraBool) {
sumaPunktow = 200;
for(int i = 1; i < lewyWpadkowe; i++)
{
if(i < 4) sumaPunktow += 300;
else sumaPunktow += 0;
for (int i = 1; i < lewyWpadkowe; i++) {
if (i < 4)
sumaPunktow += 300;
else
sumaPunktow += 0;
}
}
if(kontraBool && rekontraBool)
{
if (kontraBool && rekontraBool) {
sumaPunktow = 400;
for(int i = 1; i < lewyWpadkowe; i++)
{
if(i < 4) sumaPunktow += 600;
else sumaPunktow += 0;
for (int i = 1; i < lewyWpadkowe; i++) {
if (i < 4)
sumaPunktow += 600;
else
sumaPunktow += 0;
}
}
}else
{
if(!kontraBool && !rekontraBool)
{
} else {
if (!kontraBool && !rekontraBool) {
sumaPunktow = 50;
for(int i = 1; i < lewyWpadkowe; i++)
{
if(i < 4) sumaPunktow += 50;
else sumaPunktow += 0;
for (int i = 1; i < lewyWpadkowe; i++) {
if (i < 4)
sumaPunktow += 50;
else
sumaPunktow += 0;
}
}
if(kontraBool && !rekontraBool)
{
if (kontraBool && !rekontraBool) {
sumaPunktow = 100;
for(int i = 1; i < lewyWpadkowe; i++)
{
if(i < 4) sumaPunktow += 200;
else sumaPunktow += 100;
for (int i = 1; i < lewyWpadkowe; i++) {
if (i < 4)
sumaPunktow += 200;
else
sumaPunktow += 100;
}
}
if(kontraBool && rekontraBool)
{
if (kontraBool && rekontraBool) {
sumaPunktow = 200;
for(int i = 1; i < lewyWpadkowe; i++)
{
if(i < 4) sumaPunktow += 400;
else sumaPunktow += 200;
for (int i = 1; i < lewyWpadkowe; i++) {
if (i < 4)
sumaPunktow += 400;
else
sumaPunktow += 200;
}
}
}
std::cout << "Broniacy zdobyli: " << sumaPunktow << std::endl;
if(ktoKontraktI == A_ID)
{
if (ktoKontraktI == A_ID) {
punktyB.push_back(sumaPunktow);
punktyA.push_back(0);
}
else
{
} else {
punktyA.push_back(sumaPunktow);
punktyB.push_back(0);
}
return;
}
}
bool gra()
{
bool gra() {
bool koniecGry = 0;
std::vector<int> punktyA;
std::vector<int> punktyB;
@ -387,15 +364,19 @@ bool gra()
int atut = zagranyAtut(lwy);
bool kontraBool = zagranaKontra();
bool rekontraBool = 0;
if(kontraBool) rekontraBool = zagranaRekontra();
if (kontraBool)
rekontraBool = zagranaRekontra();
stanGry(lwy, atut, kontraBool, rekontraBool, ktoraGra, ktoKontraktI);
int wpadki = ileWpadek();
int zebraneLewy = ILOSC_LEW - wpadki;
bool rozgrywajacyWygral = 1;
if( zebraneLewy >= lwy + DOMYSLNE_LEWY) rozgrywajacyWygral = 1;
else rozgrywajacyWygral = 0;
punkty(punktyA, punktyB, lwy, atut, kontraBool, rekontraBool, ktoraGra, ktoKontraktI, rozgrywajacyWygral, wpadki);
if (zebraneLewy >= lwy + DOMYSLNE_LEWY)
rozgrywajacyWygral = 1;
else
rozgrywajacyWygral = 0;
punkty(punktyA, punktyB, lwy, atut, kontraBool, rekontraBool, ktoraGra,
ktoKontraktI, rozgrywajacyWygral, wpadki);
print("Czy koniec gry? 1 - TAK, 0 - NIE");
std::cin >> koniecGry;
} while (!koniecGry);
@ -403,8 +384,8 @@ bool gra()
return 0;
}
int main()
{
while(gra());
int main() {
while (gra())
;
return 0;
}

View File

@ -1,91 +1,72 @@
#ifndef BASIC_CPP
#define BASIC_CPP
#include <iostream>
#include <string>
#include <vector>
#include <iostream>
#include <windows.h>
void print(const std::string s) { std::cout << s << std::endl; }
void printErrorStringContainsNotNumber(const std::string s)
{
void printErrorStringContainsNotNumber(const std::string s) {
std::cout << "string: \"" << s
<< "\" contains character different than number " << std::endl;
}
void printNumberTooLow(const int number, const int min)
{
std::cout << "number: " << number
<< " is too low. Minimal number is: " << min << std::endl;
void printNumberTooLow(const int number, const int min) {
std::cout << "number: " << number << " is too low. Minimal number is: " << min
<< std::endl;
}
void printNumberTooHigh(const int number, const int max)
{
void printNumberTooHigh(const int number, const int max) {
std::cout << "number: " << number
<< " is too high. Maximal number is: " << max << std::endl;
}
void printNotValidStringLength(const std::string s, const int desiredLength)
{
std::cout << "String: \"" << s << "\" is too short/too long, it is: "
<< s.length() << " characters long but should be: " << desiredLength
void printNotValidStringLength(const std::string s, const int desiredLength) {
std::cout << "String: \"" << s
<< "\" is too short/too long, it is: " << s.length()
<< " characters long but should be: " << desiredLength
<< " characters long " << std::endl;
}
void printInvalidCharacter(const char c, const char desiredCharacter)
{
void printInvalidCharacter(const char c, const char desiredCharacter) {
std::cout << "[ " << c << " ] Is invalid character, expected: [ "
<< desiredCharacter << " ]" << std::endl;
}
void printContainsIllegalCharacter(const std::string s,
const char illegalCharacter )
{
const char illegalCharacter) {
std::cout << "String: " << s << " consists of illegal sign: ["
<< illegalCharacter << "]!" << std::endl;
}
bool numberTooLow(const int number, const int min)
{
if(number < min)
{
bool numberTooLow(const int number, const int min) {
if (number < min) {
printNumberTooLow(number, min);
return 1;
}
return 0;
}
bool numberTooHigh(const int number, const int max)
{
if(number > max)
{
bool numberTooHigh(const int number, const int max) {
if (number > max) {
printNumberTooHigh(number, max);
return 1;
}
return 0;
}
bool containsIllegalCharacter(const std::string s, const char illegalCharacter)
{
if( s.find(illegalCharacter) != std::string::npos)
{
bool containsIllegalCharacter(const std::string s,
const char illegalCharacter) {
if (s.find(illegalCharacter) != std::string::npos) {
printContainsIllegalCharacter(s, illegalCharacter);
return 1;
}
return 0;
}
void e() { print("Poor man breakboint"); }
void e()
{
print("Poor man breakboint");
}
bool charIsNumber(const char c)
{
return c >= '0' && c <= '9';
}
bool charIsNumber(const char c) { return c >= '0' && c <= '9'; }
#endif

View File

@ -1,16 +1,14 @@
#ifndef MAIN_CPP
#define MAIN_CPP
#include "basic.cpp"
#include <iostream>
#include <string>
#include <vector>
#include "basic.cpp"
std::vector <int> fillVector(const int min, const int max)
{
std::vector<int> fillVector(const int min, const int max) {
std::vector<int> newVector;
for(int i = min; i <= max; i++)
{
for (int i = min; i <= max; i++) {
newVector.push_back(i);
}
return newVector;
@ -20,11 +18,9 @@ const int MAX_SPOT = 20;
const int MIN_SPOT = 1;
const std::vector<int> NORMAL_POINTS = fillVector(MIN_SPOT, MAX_SPOT);
std::vector <int> multiplyVector(const std::vector <int> v, int multiplyBy)
{
std::vector<int> multiplyVector(const std::vector<int> v, int multiplyBy) {
std::vector<int> newVector;
for(unsigned int i = 0; i < v.size(); i++)
{
for (unsigned int i = 0; i < v.size(); i++) {
newVector.push_back(v.at(i) * multiplyBy);
}
return newVector;
@ -38,13 +34,9 @@ const int MAX_POINTS_TURN = THROWS_IN_ONE_HIT * MAX_ONE_HIT;
const int STARTING_POINTS = 501;
const int FINAL_POINTS = 0;
bool validString(const std::string s)
{
for(unsigned int i = 0; i < s.length(); i++)
{
if(!charIsNumber(s.at(i)))
{
bool validString(const std::string s) {
for (unsigned int i = 0; i < s.length(); i++) {
if (!charIsNumber(s.at(i))) {
printErrorStringContainsNotNumber(s);
return 0;
}
@ -52,30 +44,28 @@ bool validString(const std::string s)
return 1;
}
bool validNumberInput(const std::string input, const int min, const int max)
{
if(!validString(input)) return 0;
bool validNumberInput(const std::string input, const int min, const int max) {
if (!validString(input))
return 0;
int inputInt = std::stoi(input);
if(numberTooLow(inputInt, min)) return 0;
if(numberTooHigh(inputInt, max)) return 0;
if (numberTooLow(inputInt, min))
return 0;
if (numberTooHigh(inputInt, max))
return 0;
return 1;
}
bool validInput(const std::string s)
{
if(s.length() > 3) return 0;
if(!validNumberInput(s, FINAL_POINTS, STARTING_POINTS)) return 0;
bool validInput(const std::string s) {
if (s.length() > 3)
return 0;
if (!validNumberInput(s, FINAL_POINTS, STARTING_POINTS))
return 0;
return 1;
}
std::vector <int> requiredShoots(const int pointsLeft)
{
std::vector<int> requiredShoots(const int pointsLeft) {}
}
int main()
{
int main() {
print("Enter points left: ");
std::string pointsLeft;
do {

View File

@ -1,60 +1,50 @@
#include <iostream>
#include <cmath>
#include <iostream>
const int PERCENTAGE = 44;
const float PERCENTAGE_DENOMINATOR = 100;
const int NUMBERS_TO_CHECK = 200;
const bool DEBUG = 0;
bool isInteger(const float number)
{
return number == std::floor(number);
}
bool isInteger(const float number) { return number == std::floor(number); }
void printIsInteger(const int i, const int inputPercentage,
const float calculatedPercentage)
{
std::cout << i << "*" << inputPercentage << "% is an integer number: "
<< i*calculatedPercentage << std::endl;
const float calculatedPercentage) {
std::cout << i << "*" << inputPercentage
<< "% is an integer number: " << i * calculatedPercentage
<< std::endl;
}
void printDebug(const int i, const float calculatedPercentage)
{
void printDebug(const int i, const float calculatedPercentage) {
std::cout << "i = " << i << std::endl;
std::cout << i * calculatedPercentage << std::endl;
}
void isIntegerLoop(const bool debugOn = DEBUG,
const int maxNumber = NUMBERS_TO_CHECK,
const int inputPercentage = PERCENTAGE )
{
const int inputPercentage = PERCENTAGE) {
float actualPercentage = inputPercentage / PERCENTAGE_DENOMINATOR;
for(int i = 1; i <= maxNumber; i++)
{
if(isInteger(i*actualPercentage))
{
for (int i = 1; i <= maxNumber; i++) {
if (isInteger(i * actualPercentage)) {
printIsInteger(i, inputPercentage, actualPercentage);
}
else if(debugOn) printDebug(i, actualPercentage);
} else if (debugOn)
printDebug(i, actualPercentage);
}
}
void printStartingMessage(const int maxNumber = NUMBERS_TO_CHECK,
const int inputPercentage = PERCENTAGE)
{
const int inputPercentage = PERCENTAGE) {
std::cout << "For max number = " << maxNumber
<< "; and a percentage: " << inputPercentage
<< "; Found following integer numbers: " << std::endl;
}
void mainFunctions()
{
void mainFunctions() {
printStartingMessage();
isIntegerLoop();
}
int main()
{
int main() {
mainFunctions();
return 0;
}

View File

@ -1,48 +1,34 @@
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#ifndef CHECK_ISBN_CPP
#define CHECK_ISBN_CPP
const bool DEBUG = 0;
const int ISBN_LENGTH = 10;
const int CHECK_NUMBER = 11;
const unsigned long long int HIGHEST_ISBN = 9999999999;
void printVector(std::vector <int> v)
{
for(unsigned int i = 0; i < v.size(); i++)
{
void printVector(std::vector<int> v) {
for (unsigned int i = 0; i < v.size(); i++) {
std::cout << v[i] << "; ";
}
}
void print(const std::string printMe)
{
std::cout << printMe << std::endl;
}
void print(const std::string printMe) { std::cout << printMe << std::endl; }
void e()
{
print("PRINT");
}
void e() { print("PRINT"); }
bool checkInput(const std::string input)
{
if(input.length() != ISBN_LENGTH)
{
bool checkInput(const std::string input) {
if (input.length() != ISBN_LENGTH) {
print("Your number is too short/too long");
return 0;
}
for(int i = 0; i <= ISBN_LENGTH - 1; i++)
{
if(input.at(i) < '0' || input.at(i) > '9')
{
for (int i = 0; i <= ISBN_LENGTH - 1; i++) {
if (input.at(i) < '0' || input.at(i) > '9') {
print("Your number consists of illegal characters");
return 0;
}
@ -50,18 +36,15 @@ bool checkInput(const std::string input)
return 1;
}
std::vector <int> stringToIntVector(const std::string input)
{
std::vector<int> stringToIntVector(const std::string input) {
std::vector<int> vector;
for(int i = input.length() - 1; i >= 0; i--)
{
for (int i = input.length() - 1; i >= 0; i--) {
vector.push_back(input.at(i) - '0');
}
return vector;
}
std::vector <int> userISBN()
{
std::vector<int> userISBN() {
std::string input;
do {
std::cout << "Enter the ISBN number (10 digits): ";
@ -70,14 +53,9 @@ std::vector <int> userISBN()
return stringToIntVector(input);
}
bool checkISBN(const std::vector <int> isbn)
{
bool checkISBN(const std::vector<int> isbn) {
int sum = 0, t = 0;
for(int i = 0; i < ISBN_LENGTH; i++)
{
for (int i = 0; i < ISBN_LENGTH; i++) {
t += isbn[i];
sum += t;
}
@ -90,11 +68,9 @@ bool checkISBN(const std::vector <int> isbn)
return !(sum % CHECK_NUMBER);
}
std::vector <int> intToVector(unsigned long long int number)
{
std::vector<int> intToVector(unsigned long long int number) {
std::vector<int> numbers;
while(number > 0)
{
while (number > 0) {
numbers.push_back(number % 10);
number /= 10;
}
@ -103,18 +79,13 @@ std::vector <int> intToVector(unsigned long long int number)
return numbers;
}
int checkAll()
{
int checkAll() {
int sum = 0;
std::ofstream file;
file.open("ISBN.txt");
for(unsigned long long int i = HIGHEST_ISBN; i >= 1; i--)
{
for (unsigned long long int i = HIGHEST_ISBN; i >= 1; i--) {
// if(DEBUG) std::cout << i << std::endl;
if( checkISBN(intToVector(i)) )
{
if (checkISBN(intToVector(i))) {
++sum;
file << std::to_string(i) << "\n";
}
@ -124,8 +95,7 @@ int checkAll()
return sum;
}
int main()
{
int main() {
checkAll();
return 0;
}

View File

@ -1,44 +1,35 @@
#include <iostream>
#include <vector>
struct charOccurence
{
struct charOccurence {
char c;
int occurrence;
};
void printCharOccurenceVector(const std::vector <charOccurence> v)
{
void printCharOccurenceVector(const std::vector<charOccurence> v) {
std::cout << "[";
for(unsigned int i = 0; i < v.size(); i++)
{
std::cout << "(\"" << v.at(i).c << "\", " << v.at(i).occurrence << ")" << (i + 1 == v.size() ? "" : ", ");
for (unsigned int i = 0; i < v.size(); i++) {
std::cout << "(\"" << v.at(i).c << "\", " << v.at(i).occurrence << ")"
<< (i + 1 == v.size() ? "" : ", ");
}
std::cout << "]" << std::endl;
}
int main()
{
int main() {
std::vector<charOccurence> list;
std::string userInput = "aaaabbbcca";
charOccurence newCharOccurence;
newCharOccurence.c = userInput.at(0);
newCharOccurence.occurrence = 1;
for(unsigned int i = 1, j = 1; i < userInput.length(); i++)
{
for (unsigned int i = 1, j = 1; i < userInput.length(); i++) {
char newCharacter = userInput.at(i);
if(newCharacter != newCharOccurence.c)
{
if (newCharacter != newCharOccurence.c) {
list.push_back(newCharOccurence);
j = 1;
newCharOccurence.c = newCharacter;
newCharOccurence.occurrence = j;
}else
{
} else {
newCharOccurence.occurrence++;
}
}

View File

@ -1,10 +1,10 @@
#ifndef BASIC_CPP
#define BASIC_CPP
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
void print(const std::string s) { std::cout << s << std::endl; }
@ -14,102 +14,86 @@ void e() { print("Poor man breakboint"); }
bool charIsNumber(const char c) { return c >= '0' && c <= '9'; }
void printStringNewLine(const std::string s)
{
void printStringNewLine(const std::string s) {
std::cout << "string: " << std::endl;
std::cout << "\"" << s << "\"" << std::endl;
}
void printStringContainsNotNumbers(const std::string s, const int position)
{
void printStringContainsNotNumbers(const std::string s, const int position) {
printStringNewLine(s);
std::cout << "contains character different than number at position: " << position
<< "; this character is: " << s.at(position) << std::endl;
std::cout << "contains character different than number at position: "
<< position << "; this character is: " << s.at(position)
<< std::endl;
}
void printStringContainsNumbers(const std::string s, const int position)
{
void printStringContainsNumbers(const std::string s, const int position) {
printStringNewLine(s);
std::cout << "contains number at postion: " << position
<< "; this number is: " << s.at(position) << std::endl;
}
void printNumberTooLow(const int number, const int min)
{
std::cout << "number: " << number
<< " is too low. Minimal number is: " << min << std::endl;
void printNumberTooLow(const int number, const int min) {
std::cout << "number: " << number << " is too low. Minimal number is: " << min
<< std::endl;
}
void printNumberTooHigh(const int number, const int max)
{
void printNumberTooHigh(const int number, const int max) {
std::cout << "number: " << number
<< " is too high. Maximal number is: " << max << std::endl;
}
void printNotValidStringLength(const std::string s, const int desiredLength)
{
void printNotValidStringLength(const std::string s, const int desiredLength) {
printStringNewLine(s);
std::cout << "is too short/too long, it is: "
<< s.length() << " characters long but should be: " << desiredLength
std::cout << "is too short/too long, it is: " << s.length()
<< " characters long but should be: " << desiredLength
<< " characters long " << std::endl;
}
void printInvalidCharacter(const char c, const char desiredCharacter)
{
void printInvalidCharacter(const char c, const char desiredCharacter) {
std::cout << "[ " << c << " ] Is invalid character, expected: [ "
<< desiredCharacter << " ]" << std::endl;
}
void printContainsIllegalCharacter(const std::string s,
const char illegalCharacter )
{
const char illegalCharacter) {
printStringNewLine(s);
std::cout << " consists of illegal sign: ["
<< illegalCharacter << "]!" << std::endl;
std::cout << " consists of illegal sign: [" << illegalCharacter << "]!"
<< std::endl;
}
bool numberTooLow(const int number, const int min)
{
if(number < min)
{
bool numberTooLow(const int number, const int min) {
if (number < min) {
printNumberTooLow(number, min);
return 1;
}
return 0;
}
bool numberTooHigh(const int number, const int max)
{
if(number > max)
{
bool numberTooHigh(const int number, const int max) {
if (number > max) {
printNumberTooHigh(number, max);
return 1;
}
return 0;
}
bool containsIllegalCharacter(const std::string s, const char illegalCharacter)
{
if( s.find(illegalCharacter) != std::string::npos)
{
bool containsIllegalCharacter(const std::string s,
const char illegalCharacter) {
if (s.find(illegalCharacter) != std::string::npos) {
printContainsIllegalCharacter(s, illegalCharacter);
return 1;
}
return 0;
}
void printStringVector(const std::vector <std::string> vector)
{
for(unsigned int i = 0; i < vector.size(); i++) print(vector.at(i));
void printStringVector(const std::vector<std::string> vector) {
for (unsigned int i = 0; i < vector.size(); i++)
print(vector.at(i));
}
bool stringContainsNotNumbers(const std::string s)
{
for(unsigned int i = 0; i < s.length(); i++)
{
if(!charIsNumber(s.at(i)))
{
bool stringContainsNotNumbers(const std::string s) {
for (unsigned int i = 0; i < s.length(); i++) {
if (!charIsNumber(s.at(i))) {
printStringContainsNotNumbers(s, i);
return 1;
}
@ -117,12 +101,9 @@ bool stringContainsNotNumbers(const std::string s)
return 0;
}
bool stringContainsNumbers(const std::string s)
{
for(unsigned int i = 0; i < s.length(); i++)
{
if(charIsNumber(s.at(i)))
{
bool stringContainsNumbers(const std::string s) {
for (unsigned int i = 0; i < s.length(); i++) {
if (charIsNumber(s.at(i))) {
printStringContainsNumbers(s, i);
return 1;
}
@ -130,43 +111,34 @@ bool stringContainsNumbers(const std::string s)
return 0;
}
bool validStringLength(const std::string s, const int desiredLength)
{
bool validStringLength(const std::string s, const int desiredLength) {
int stringLength = s.length();
if(stringLength != desiredLength)
{
if (stringLength != desiredLength) {
printNotValidStringLength(s, desiredLength);
return 0;
}
return 1;
}
bool validCharacter(const char inputC, const char desiredC)
{
if(inputC != desiredC)
{
bool validCharacter(const char inputC, const char desiredC) {
if (inputC != desiredC) {
printInvalidCharacter(inputC, desiredC);
return 0;
}
return 1;
}
void vectorToFile(const std::vector <std::string> strings, std::ofstream &file)
{
for(unsigned int i = 0; i < strings.size(); i++)
{
void vectorToFile(const std::vector<std::string> strings, std::ofstream &file) {
for (unsigned int i = 0; i < strings.size(); i++) {
file << strings.at(i) << std::endl;
}
}
std::vector<std::string> fileToVector(std::ifstream &file,
std::vector <std::string> strings)
{
std::vector<std::string> strings) {
std::string line;
if(file.is_open())
{
while(getline(file, line))
{
if (file.is_open()) {
while (getline(file, line)) {
strings.push_back(line);
}
file.close();

View File

@ -1,25 +1,22 @@
#ifndef MAIN_CPP
#define MAIN_CPP
#include <string>
#include <iostream>
#include <vector>
#include "basic.cpp"
#include <iostream>
#include <string>
#include <vector>
struct wordOccurences
{
struct wordOccurences {
std::string word;
int occurences;
}
struct previousWords
{
struct previousWords {
std::string word;
std::vector<wordOccurences> previousWords;
};
struct wordProbabiliy
{
struct wordProbabiliy {
std::string previousWord;
std::string nextWord;
float probability;
@ -27,25 +24,23 @@ struct wordProbabiliy
bool validInput(const std::string userInput)
{
if(stringContainsNumbers(userInput)) return 0;
if (stringContainsNumbers(userInput))
return 0;
return 1;
}
std::vector <std::string> divideIntoWords(const std::string userInput)
{
std::vector<std::string> divideIntoWords(const std::string userInput) {
std::vector<std::string> words;
int inputLength = userInput.length();
int wordLength = 0;
for(int i = 0; i < inputLength; i++)
{
if(userInput.at(i) == ' ')
{
for (int i = 0; i < inputLength; i++) {
if (userInput.at(i) == ' ') {
words.push_back(userInput.substr(i - wordLength, wordLength));
wordLength = 0;
}else wordLength++;
} else
wordLength++;
if(i + 1 == inputLength)
{
if (i + 1 == inputLength) {
words.push_back(userInput.substr(i - wordLength + 1, wordLength + 1));
wordLength = 0;
}
@ -53,30 +48,28 @@ std::vector <std::string> divideIntoWords(const std::string userInput)
return words;
}
int wordRepeats(const std::vector <previousWords> wordsList, const std::string word)
{
int wordRepeats(const std::vector<previousWords> wordsList,
const std::string word) {
int wordsSize = wordsList.size();
for(int i = 0; i < wordsSize; i++)
{
if(wordsList.at(i).word == word) return i;
for (int i = 0; i < wordsSize; i++) {
if (wordsList.at(i).word == word)
return i;
}
return -1;
}
bool alreadyExists(const std::vector <previousWords> wordsList, const std::string s)
{
for(unsigned int i = 0; i < wordsList.size(); i++)
{
bool alreadyExists(const std::vector<previousWords> wordsList,
const std::string s) {
for (unsigned int i = 0; i < wordsList.size(); i++) {
if(s == wordsList.previousWOrds
}
}
std::vector <previousWords> getWordsAndTheirPrevious(const std::vector <std::string> words)
{
std::vector<previousWords>
getWordsAndTheirPrevious(const std::vector<std::string> words) {
std::vector<previousWords> wordsList;
int wordsSize = words.size();
for(int i = 1; i < wordsSize; i++)
{
for (int i = 1; i < wordsSize; i++) {
previousWords temp;
temp.word = words.at(i);
wordOccurences tempTwo;
@ -84,47 +77,40 @@ std::vector <previousWords> getWordsAndTheirPrevious(const std::vector <std::str
tempTwo.occurences = 1;
temp.previousWords.push_back(tempTwo);
int position = wordRepeats(wordsList, temp.word);
if(position == -1)
{
if (position == -1) {
wordsList.push_back(temp);
}else
{
} else {
wordsList.at(position).previousWords.push_back(temp.previousWords.at(0));
wordsList.at(position).previousWords.push_back(
temp.previousWords.at(0));
}
}
return wordsList;
}
void printPreviousWord(const previousWords word)
{
std::cout << "The word is \"" << word.word << "\" Words before it are: " << std::endl;
for(unsigned int i = 0; i < word.previousWords.size(); i++)
{
void printPreviousWord(const previousWords word) {
std::cout << "The word is \"" << word.word
<< "\" Words before it are: " << std::endl;
for (unsigned int i = 0; i < word.previousWords.size(); i++) {
print(word.previousWords.at(i));
}
}
void printPreviousWordsVector(const std::vector <previousWords> v)
{
for(unsigned int i = 0; i < v.size(); i++)
{
void printPreviousWordsVector(const std::vector<previousWords> v) {
for (unsigned int i = 0; i < v.size(); i++) {
printPreviousWord(v.at(i));
}
}
std::vector <wordProbability> getWordProbability(const std::vector <previousWords> wordsList)
{
std::vector<wordProbability>
getWordProbability(const std::vector<previousWords> wordsList) {
std::vector<wordProbability> probalityVector;
for(unsigned int i = 0; i - 1 < wordsList.size(); i++)
{
for (unsigned int i = 0; i - 1 < wordsList.size(); i++) {
pro
}
}
int main()
{
int main() {
std::string userInput;
do {
getline(std::cin, userInput);

View File

@ -1,22 +1,18 @@
#include <iostream>
int multiplication(int a, int b)
{
int multiplication(int a, int b) {
int answer = 0;
for(int i = 0; i < a; i++)
{
for (int i = 0; i < a; i++) {
answer += b;
}
if(answer != a*b)
{
if (answer != a * b) {
std::cout << "There is a mistake in your code!" << std::endl;
return -1;
} else return answer;
} else
return answer;
}
int main()
{
int main() {
int a, b;
std::cout << "Enter number a" << std::endl;
std::cin >> a;

View File

@ -1,20 +1,18 @@
#include <iostream>
#include <vector>
int sumStartEnd(int start, int end)
{
int sumStartEnd(int start, int end) {
int sum = 0;
for(int i = start; i <= end; i++)
{
for (int i = start; i <= end; i++) {
sum += i;
}
return sum;
}
int main()
{
int main() {
std::cout << "Krzysztof" << std::endl;
for(int i = 700; i >= 200; i -= 13) std::cout << i << std::endl;
for (int i = 700; i >= 200; i -= 13)
std::cout << i << std::endl;
std::vector<int> array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
// if SECOND means 0, 1, TWO
std::cout << array[2] << std::endl;
@ -25,32 +23,36 @@ int main()
std::string userName;
std::cout << std::endl;
getline(std::cin, userName);
if(userName == "Jack") std::cout << "Hi Jack!" << std::endl;
else std::cout << "Hello, " << userName << std::endl;
if (userName == "Jack")
std::cout << "Hi Jack!" << std::endl;
else
std::cout << "Hello, " << userName << std::endl;
for(int i = 0; i <= 100; i++)
{
if(i % 2 == 0) std::cout << i << " is an even number" << std::endl;
else std::cout << i << " is an odd number" << std::endl;
for (int i = 0; i <= 100; i++) {
if (i % 2 == 0)
std::cout << i << " is an even number" << std::endl;
else
std::cout << i << " is an odd number" << std::endl;
}
bool flag = 1;
for(int i = 0; i <= 100; i++)
{
if(flag) std::cout << i << " is an even number" << std::endl;
else std::cout << i << " is an odd number" << std::endl;
for (int i = 0; i <= 100; i++) {
if (flag)
std::cout << i << " is an even number" << std::endl;
else
std::cout << i << " is an odd number" << std::endl;
flag = -flag;
}
for(int i = 0; i <= 100; i += 2) std::cout << i << " is an even number " << std::endl;
for(int i = 1; i <= 99; i += 2) std::cout << i << " is an odd number " << std::endl;
for (int i = 0; i <= 100; i += 2)
std::cout << i << " is an even number " << std::endl;
for (int i = 1; i <= 99; i += 2)
std::cout << i << " is an odd number " << std::endl;
for(int i = 1, j = 1; j <= 12; i++)
{
for (int i = 1, j = 1; j <= 12; i++) {
std::cout << i * j << " ";
if(i == 12)
{
if (i == 12) {
i = 1;
j++;
std::cout << std::endl;
@ -62,19 +64,17 @@ int main()
getline(std::cin, sentence);
std::vector<std::string> words;
std::string temp;
for(unsigned int i = 0; i < sentence.length(); i++)
{
if(sentence.at(i) == ' ' || i + 1 == sentence.length())
{
if(i + 1 == sentence.length()) temp.push_back(sentence.at(i));
for (unsigned int i = 0; i < sentence.length(); i++) {
if (sentence.at(i) == ' ' || i + 1 == sentence.length()) {
if (i + 1 == sentence.length())
temp.push_back(sentence.at(i));
words.push_back(temp);
temp = "";
}else temp.push_back(sentence.at(i));
} else
temp.push_back(sentence.at(i));
}
for(unsigned int i = 0; i < words.size(); i++)
{
for (unsigned int i = 0; i < words.size(); i++) {
std::cout << words[i] << std::endl;
}
@ -86,11 +86,14 @@ int main()
std::cin >> project;
std::cout << std::endl;
bool doneProject = 0;
if(project == 'Y') doneProject = 1;
if(score < 50) std::cout << GRADES[0 + doneProject];
else if(score < 70) std::cout << GRADES[1 + doneProject];
else if(score < 90) std::cout << GRADES[2 + doneProject];
else std::cout << GRADES[3];
if (project == 'Y')
doneProject = 1;
if (score < 50)
std::cout << GRADES[0 + doneProject];
else if (score < 70)
std::cout << GRADES[1 + doneProject];
else if (score < 90)
std::cout << GRADES[2 + doneProject];
else
std::cout << GRADES[3];
}

View File

@ -1,5 +1,5 @@
#include <random>
#include <iostream>
#include <random>
int main() {
std::random_device rd;

View File

@ -1,15 +1,13 @@
#include <algorithm>
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
int main() {
std::string userString;
getline(std::cin, userString);
int sLength = userString.length();
std::string tempString = userString;
for(int i = 0; i < sLength/2; i++)
{
for (int i = 0; i < sLength / 2; i++) {
char temp = tempString[sLength - 1 - i];
tempString[sLength - 1 - i] = tempString[i];
tempString[i] = temp;

View File

@ -1,6 +1,6 @@
#include <iostream>
#include <string>
#include <math.h>
#include <string>
const std::string ENTER = "Enter quadratic equation constants: ";
const std::string WHAT_TO_INPUT = "a, b, c as in: ax^2 + bx + c = 0";
@ -8,31 +8,24 @@ const std::string START = ENTER + WHAT_TO_INPUT;
void print(const std::string s) { std::cout << s << std::endl; }
float getDelta(float a, float b, float c)
{
return b*b - 4*a*c;
}
float getDelta(float a, float b, float c) { return b * b - 4 * a * c; }
float calculateFirstTerm(float a, float b, float delta)
{
float calculateFirstTerm(float a, float b, float delta) {
return (-b - sqrt(delta)) / (2 * a);
}
float calculateSecondTerm(float a, float b, float delta)
{
float calculateSecondTerm(float a, float b, float delta) {
return (-b + sqrt(delta)) / (2 * a);
}
int main()
{
int main() {
print(START);
float a, b, c;
std::cin >> a;
std::cin >> b;
std::cin >> c;
float delta = getDelta(a, b, c);
if(delta < 0)
{
if (delta < 0) {
print("delta smaller than 0");
return -1;
}
@ -43,6 +36,4 @@ int main()
std::cout << "x_1 = " << x_1 << std::endl;
std::cout << "x_2 = " << x_2 << std::endl;
return 0;
}

View File

@ -1,82 +1,90 @@
#include <iostream>
#include <vector>
void printField(std::vector<unsigned int> &field)
{
void printField(std::vector<unsigned int> &field) {
std::cout << std::endl;
for(int i = 0; i < 9; i++)
{
if(i % 3 == 0) std::cout << std::endl;
if(field[i] == 0) std::cout << "-";
else if(field[i] == 1) std::cout << "X";
else if(field[i] == 2) std::cout << "O";
for (int i = 0; i < 9; i++) {
if (i % 3 == 0)
std::cout << std::endl;
if (field[i] == 0)
std::cout << "-";
else if (field[i] == 1)
std::cout << "X";
else if (field[i] == 2)
std::cout << "O";
}
std::cout << std::endl;
}
unsigned int chooseField(unsigned int playerNumber, std::vector<unsigned int> &field)
{
unsigned int chooseField(unsigned int playerNumber,
std::vector<unsigned int> &field) {
unsigned int chosenField;
do
{
do {
std::cout << "player " << playerNumber << " choose a field:" << std::endl;
std::cin >> chosenField;
} while (field[chosenField] != 0);
return chosenField;
}
bool vertical(unsigned int playerNumber, std::vector<unsigned int> &field)
{
if((field[0] == playerNumber && field[1] == playerNumber && field[2] == playerNumber)
|| (field[3] == playerNumber && field[4] == playerNumber && field[5] == playerNumber)
|| (field[6] == playerNumber && field[7] == playerNumber && field[8] == playerNumber))
{
bool vertical(unsigned int playerNumber, std::vector<unsigned int> &field) {
if ((field[0] == playerNumber && field[1] == playerNumber &&
field[2] == playerNumber) ||
(field[3] == playerNumber && field[4] == playerNumber &&
field[5] == playerNumber) ||
(field[6] == playerNumber && field[7] == playerNumber &&
field[8] == playerNumber)) {
return 1;
}else return 0;
} else
return 0;
}
bool horizontal(unsigned int playerNumber, std::vector<unsigned int> &field)
{
if((field[0] == playerNumber && field[3] == playerNumber && field[6] == playerNumber)
|| (field[1] == playerNumber && field[4] == playerNumber && field[7] == playerNumber)
|| (field[2] == playerNumber && field[5] == playerNumber && field[8] == playerNumber))
{
bool horizontal(unsigned int playerNumber, std::vector<unsigned int> &field) {
if ((field[0] == playerNumber && field[3] == playerNumber &&
field[6] == playerNumber) ||
(field[1] == playerNumber && field[4] == playerNumber &&
field[7] == playerNumber) ||
(field[2] == playerNumber && field[5] == playerNumber &&
field[8] == playerNumber)) {
return 1;
}else return 0;
} else
return 0;
}
bool across(unsigned int playerNumber, std::vector<unsigned int> &field)
{
if((field[0] == playerNumber && field[4] == playerNumber && field[8] == playerNumber)
|| (field[2] == playerNumber && field[4] == playerNumber && field[6] == playerNumber))
{
bool across(unsigned int playerNumber, std::vector<unsigned int> &field) {
if ((field[0] == playerNumber && field[4] == playerNumber &&
field[8] == playerNumber) ||
(field[2] == playerNumber && field[4] == playerNumber &&
field[6] == playerNumber)) {
return 1;
}else return 0;
} else
return 0;
}
bool checkPlayerWin(unsigned int playerNumber, std::vector<unsigned int> &field)
{
if(vertical(playerNumber, field)) return 1;
if(horizontal(playerNumber, field)) return 1;
if(across(playerNumber, field)) return 1;
else return 0;
bool checkPlayerWin(unsigned int playerNumber,
std::vector<unsigned int> &field) {
if (vertical(playerNumber, field))
return 1;
if (horizontal(playerNumber, field))
return 1;
if (across(playerNumber, field))
return 1;
else
return 0;
}
unsigned int checkIfWin(std::vector<unsigned int> &field)
{
if(checkPlayerWin(1, field)) return 1;
else if(checkPlayerWin(2, field)) return 2;
else return 0;
unsigned int checkIfWin(std::vector<unsigned int> &field) {
if (checkPlayerWin(1, field))
return 1;
else if (checkPlayerWin(2, field))
return 2;
else
return 0;
}
bool checkIfFilled(std::vector<unsigned int> &field)
{
bool checkIfFilled(std::vector<unsigned int> &field) {
bool filled = 1;
for(int i = 0; i < 9; i++)
{
if(field[i] == 0)
{
for (int i = 0; i < 9; i++) {
if (field[i] == 0) {
filled = 0;
return filled;
}
@ -84,28 +92,32 @@ bool checkIfFilled(std::vector<unsigned int> &field)
return filled;
}
bool turn(unsigned int playerNumber, std::vector<unsigned int> &field, bool *filled, unsigned int *whoWon)
{
bool turn(unsigned int playerNumber, std::vector<unsigned int> &field,
bool *filled, unsigned int *whoWon) {
field[chooseField(playerNumber, field)] = playerNumber;
printField(field);
*whoWon = checkIfWin(field);
*filled = checkIfFilled(field);
if(*whoWon != 0 || *filled != 0) return 1;
else return 0;
if (*whoWon != 0 || *filled != 0)
return 1;
else
return 0;
}
int main()
{
int main() {
std::vector<unsigned int> field = {0, 0, 0, 0, 0, 0, 0, 0, 0};
unsigned int whoWon = 0;
bool filled = 0;
while(whoWon == 0 || filled == 0)
{
if(turn(1, field, &filled, &whoWon)) break;
if(turn(2, field, &filled, &whoWon)) break;
while (whoWon == 0 || filled == 0) {
if (turn(1, field, &filled, &whoWon))
break;
if (turn(2, field, &filled, &whoWon))
break;
}
if(!filled) std::cout << "Player " << whoWon << " Won!" << std::endl;
else std::cout << "DRAW!" << std::endl;
if (!filled)
std::cout << "Player " << whoWon << " Won!" << std::endl;
else
std::cout << "DRAW!" << std::endl;
return 0;
}

View File

@ -2,18 +2,14 @@
#include <string>
#include <vector>
const std::vector <std::string> TIERS = {"Abhorrent", "Bad", "Mid", "Good", "Top", "God Tier"};
const std::vector<std::string> TIERS = {"Abhorrent", "Bad", "Mid",
"Good", "Top", "God Tier"};
const float TIER_BASE = TIERS.size();
void print(std::string const s)
{
std::cout << s << std::endl;
}
void print(std::string const s) { std::cout << s << std::endl; }
bool errorUserInput(std::string userInput)
{
if(userInput.find("/") == std::string::npos)
{
bool errorUserInput(std::string userInput) {
if (userInput.find("/") == std::string::npos) {
print("No '/' was found!");
return 1;
}
@ -21,27 +17,23 @@ bool errorUserInput(std::string userInput)
size_t positionOfSlash = userInput.find("/");
std::string nominatorS = userInput.substr(0, positionOfSlash);
try
{
try {
float nominator = stof(nominatorS);
}catch ( std::invalid_argument )
{
} catch (std::invalid_argument) {
print("No number was found before the slash!");
return 1;
}
std::string denominatorS = userInput.substr(positionOfSlash + 1, userInput.length() - 1);
std::string denominatorS =
userInput.substr(positionOfSlash + 1, userInput.length() - 1);
try
{
try {
float denominator = stof(denominatorS);
if(denominator == 0)
{
if (denominator == 0) {
print("You cannot divide by 0!");
return 1;
}
}catch ( std::invalid_argument )
{
} catch (std::invalid_argument) {
print("No number was found after the slash!");
return 1;
}
@ -49,28 +41,23 @@ bool errorUserInput(std::string userInput)
return 0;
}
std::string convertToTier(float nominator, float denominator)
{
std::string convertToTier(float nominator, float denominator) {
float fraction = nominator / denominator;
int tierIndex;
for(int i = TIER_BASE; i > 0; i--)
{
if(fraction >= ( i / TIER_BASE))
{
for (int i = TIER_BASE; i > 0; i--) {
if (fraction >= (i / TIER_BASE)) {
tierIndex = i - 1;
break;
}
}
if(tierIndex == 0 & fraction > (1.1/10.0)) return TIERS[1];
if (tierIndex == 0 & fraction > (1.1 / 10.0))
return TIERS[1];
return TIERS[tierIndex];
}
int main()
{
int main() {
std::string userScore;
do
{
do {
print("Enter your score in a format: numberOne/numberTwo");
getline(std::cin, userScore);
} while (errorUserInput(userScore));
@ -78,10 +65,9 @@ int main()
size_t positionOfSlash = userScore.find("/");
std::string nominatorS = userScore.substr(0, positionOfSlash);
float nominator = stof(nominatorS);
std::string denominatorS = userScore.substr(positionOfSlash + 1, userScore.length() - 1);
std::string denominatorS =
userScore.substr(positionOfSlash + 1, userScore.length() - 1);
float denominator = stof(denominatorS);
print(convertToTier(nominator, denominator));

View File

@ -1,10 +1,8 @@
#include <stdio.h>
int main()
{
int main() {
int x = 10;
while (x-- > 0)
{
while (x-- > 0) {
printf("%d;", x);
}
return 0;

View File

@ -2,8 +2,7 @@
#include <iostream>
#include <random>
int main()
{
int main() {
const int nrolls = 10000;
std::random_device rd;
@ -12,7 +11,9 @@ int main()
int count = 0; // count number of trues
for (int i=0; i<nrolls; ++i) if (distribution(gen)) ++count;
for (int i = 0; i < nrolls; ++i)
if (distribution(gen))
++count;
std::cout << "bernoulli_distribution (0.5) x 10000:" << std::endl;
std::cout << "true: " << count << std::endl;

View File

@ -1,5 +1,5 @@
#include <random>
#include <iostream>
#include <random>
int main() {
std::random_device rd;
@ -9,5 +9,6 @@ int main() {
for (int i = 0; i < 10; i++) {
std::cout << dis(gen) << std::endl;
}return 0;
}
return 0;
}

View File

@ -8,116 +8,113 @@ const bool BOT_WON = 0;
const bool PLAYER_WON = 1;
const int NOBODY_WON = 2;
void print(std::string const s)
{
std::cout << s << std::endl;
}
void print(std::string const s) { std::cout << s << std::endl; }
bool validSequence(std::string const s)
{
if(s.size() != SEQUENCE_LENGTH)
{
bool validSequence(std::string const s) {
if (s.size() != SEQUENCE_LENGTH) {
print("Sequence too long");
return false;
}
if( (s[0] != 'B' && s[0] != 'R') ||
(s[1] != 'B' && s[1] != 'R') ||
(s[2] != 'B' && s[2] != 'R'))
{
if ((s[0] != 'B' && s[0] != 'R') || (s[1] != 'B' && s[1] != 'R') ||
(s[2] != 'B' && s[2] != 'R')) {
print("Sequence consists of illegal signs!");
return false;
}
return true;
}
std::string playerChoice()
{
std::string playerChoice() {
std::string playerSequence;
do
{
do {
std::cin >> playerSequence;
}
while(!validSequence(playerSequence));
} while (!validSequence(playerSequence));
return playerSequence;
}
std::string botChoice(std::string const playerSequence)
{
std::string botChoice(std::string const playerSequence) {
std::string botSequence;
if(playerSequence[1] == 'B') botSequence.push_back('R');
else botSequence.push_back('B');
if (playerSequence[1] == 'B')
botSequence.push_back('R');
else
botSequence.push_back('B');
botSequence.push_back(playerSequence[0]);
botSequence.push_back(playerSequence[2]);
return botSequence;
}
int compareGeneratedAndPlayers(std::string playerSequence, std::string botSequence, std::string generatedSequence)
{
int compareGeneratedAndPlayers(std::string playerSequence,
std::string botSequence,
std::string generatedSequence) {
int generatedSequenceLength = generatedSequence.length();
std::string sequenceToCompare = generatedSequence.substr(generatedSequenceLength - SEQUENCE_LENGTH, generatedSequenceLength);
if(sequenceToCompare.compare(playerSequence) == 0) return PLAYER_WON;
if(sequenceToCompare.compare(botSequence) == 0) return BOT_WON;
else return NOBODY_WON;
std::string sequenceToCompare = generatedSequence.substr(
generatedSequenceLength - SEQUENCE_LENGTH, generatedSequenceLength);
if (sequenceToCompare.compare(playerSequence) == 0)
return PLAYER_WON;
if (sequenceToCompare.compare(botSequence) == 0)
return BOT_WON;
else
return NOBODY_WON;
}
bool game(std::string playerSequence, std::string botSequence)
{
bool game(std::string playerSequence, std::string botSequence) {
std::string generatedSequence;
std::random_device rd;
std::mt19937 gen(rd());
std::bernoulli_distribution distribution(0.5);
for(int i = 0; i < SEQUENCE_LENGTH; i++)
{
if(distribution(gen)) generatedSequence.push_back('R');
else generatedSequence.push_back('B');
for (int i = 0; i < SEQUENCE_LENGTH; i++) {
if (distribution(gen))
generatedSequence.push_back('R');
else
generatedSequence.push_back('B');
}
while(compareGeneratedAndPlayers(playerSequence, botSequence, generatedSequence) == NOBODY_WON)
{
if(distribution(gen)) generatedSequence.push_back('R');
else generatedSequence.push_back('B');
while (compareGeneratedAndPlayers(playerSequence, botSequence,
generatedSequence) == NOBODY_WON) {
if (distribution(gen))
generatedSequence.push_back('R');
else
generatedSequence.push_back('B');
}
print(generatedSequence);
if(compareGeneratedAndPlayers(playerSequence, botSequence, generatedSequence) == PLAYER_WON) return PLAYER_WON;
else return BOT_WON;
if (compareGeneratedAndPlayers(playerSequence, botSequence,
generatedSequence) == PLAYER_WON)
return PLAYER_WON;
else
return BOT_WON;
}
void score(int playerWins, int botWins)
{
void score(int playerWins, int botWins) {
std::cout << "Player won: " << playerWins << " times!" << std::endl;
std::cout << "Bot won: " << botWins << " times!" << std::endl;
}
int main()
{
int main() {
int playerWins = 0;
int botWins = 0;
do
{
do {
print("Do you want to play the game? 1 - yes, 0 - no");
bool continue_ = 1;
std::string playerInput;
std::cin >> playerInput;
if(playerInput[0] == '1') continue_ = 1;
else continue_ = 0;
if(!continue_) break;
if (playerInput[0] == '1')
continue_ = 1;
else
continue_ = 0;
if (!continue_)
break;
std::string playerSequence;
print("Write three colors sequence created from 52 cards from the deck (26 Black, 26 Red), write B for Black and R for Red");
print("Write three colors sequence created from 52 cards from the deck (26 "
"Black, 26 Red), write B for Black and R for Red");
playerSequence = playerChoice();
std::string botSequence = botChoice(playerSequence);
print("Bot has chosen this sequence:");
print(botSequence);
if(game(playerSequence, botSequence))
{
if (game(playerSequence, botSequence)) {
print("You won!");
playerWins++;
score(playerWins, botWins);
}
else
{
} else {
print("Bot won!");
botWins++;
score(playerWins, botWins);

View File

@ -1,7 +1,6 @@
#include <iostream>
int main()
{
int main() {
float X = 1 / 2;
std::cout << X << std::endl;
return 0;

View File

@ -83,8 +83,8 @@ export function useBattery() {
}
setLoading(false)
} catch (e: any) {
setError(e?.message ?? 'Failed to read battery status')
} catch (e: unknown) {
setError(e instanceof Error ? e.message : 'Failed to read battery status')
setLoading(false)
}
}

View File

@ -10,7 +10,7 @@ const API_BASE = 'https://api.football-data.org/v4';
const API_TOKEN = process.env.FOOTBALL_DATA_API_KEY;
if (!API_TOKEN) {
// eslint-disable-next-line no-console
console.warn('[server] FOOTBALL_DATA_API_KEY is not set. Live data will not work until you set it.');
}
@ -32,34 +32,40 @@ app.use((req, res, next) => {
const clip = (s: string) => (s && s.length > MAX_LOG_BODY ? `${s.slice(0, MAX_LOG_BODY)}…(+${s.length - MAX_LOG_BODY})` : s);
// Attach id so downstream handlers could use it if needed
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(res as any).locals = { ...(res as any).locals, requestId: id };
// Patch res.json and res.send to capture response payload
const originalJson = res.json.bind(res);
const originalSend = res.send.bind(res);
(res as any).json = (body: any) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(res as any).json = (body: unknown) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
try { (res as any).locals.bodyForLog = body; } catch { /* ignore */ }
return originalJson(body);
};
(res as any).send = (body: any) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(res as any).send = (body: unknown) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
try { (res as any).locals.bodyForLog = body; } catch { /* ignore */ }
return originalSend(body as any);
return originalSend(body);
};
// eslint-disable-next-line no-console
console.log(`[#${id}] -> ${req.method} ${req.originalUrl}` + (Object.keys(req.query || {}).length ? ` query=${JSON.stringify(req.query)}` : ''));
res.on('finish', () => {
const durMs = Number(process.hrtime.bigint() - start) / 1_000_000;
let bodyPreview = '';
try {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const body = (res as any).locals?.bodyForLog;
if (body !== undefined) {
const str = typeof body === 'string' ? body : JSON.stringify(body);
bodyPreview = ` body=${clip(str)}`;
}
} catch { /* ignore */ }
// eslint-disable-next-line no-console
console.log(`[#${id}] <- ${req.method} ${req.originalUrl} ${res.statusCode} ${durMs.toFixed(1)}ms${bodyPreview}`);
});
@ -69,13 +75,14 @@ app.use((req, res, next) => {
// Axios interceptors to log outgoing requests and incoming responses
axios.interceptors.request.use(
(config) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(config as any).metadata = { start: Date.now() };
// eslint-disable-next-line no-console
console.log(`[axios ->] ${String(config.method || 'GET').toUpperCase()} ${config.url}`);
return config;
},
(error) => {
// eslint-disable-next-line no-console
console.warn('[axios req error]', error?.message || error);
return Promise.reject(error);
}
@ -83,6 +90,7 @@ axios.interceptors.request.use(
axios.interceptors.response.use(
(response) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const started = (response.config as any).metadata?.start || Date.now();
const dur = Date.now() - started;
let dataStr = '';
@ -92,12 +100,13 @@ axios.interceptors.response.use(
const size = dataStr?.length || 0;
const MAX_LOG_BODY = 2000;
const clip = (s: string) => (s && s.length > MAX_LOG_BODY ? `${s.slice(0, MAX_LOG_BODY)}…(+${s.length - MAX_LOG_BODY})` : s);
// eslint-disable-next-line no-console
console.log(`[axios <-] ${response.status} ${String(response.config.method || 'GET').toUpperCase()} ${response.config.url} ${dur}ms ~${size}B data=${clip(dataStr)}`);
return response;
},
(error) => {
const cfg = error?.config || {};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const started = (cfg as any).metadata?.start || Date.now();
const dur = Date.now() - started;
const status = error?.response?.status;
@ -108,7 +117,7 @@ axios.interceptors.response.use(
} catch { /* ignore */ }
const MAX_LOG_BODY = 2000;
const clip = (s: string) => (s && s.length > MAX_LOG_BODY ? `${s.slice(0, MAX_LOG_BODY)}…(+${s.length - MAX_LOG_BODY})` : s);
// eslint-disable-next-line no-console
console.warn(`[axios ! ] ${status ?? 'ERR'} ${String(cfg.method || 'GET').toUpperCase()} ${cfg.url} ${dur}ms data=${dataStr ? clip(dataStr) : (error?.message || 'error')}`);
return Promise.reject(error);
}
@ -122,7 +131,8 @@ function buildHeaders() {
} as Record<string, string>;
}
function normalizeMatch(m: any) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function normalizeMatch(m: Record<string, any>) {
return {
id: m.id,
utcDate: m.utcDate,
@ -135,7 +145,8 @@ function normalizeMatch(m: any) {
score: m.score,
competition: m.competition?.name || 'UEFA Champions League',
venue: m.venue,
referees: m.referees?.map((r: any) => r.name).filter(Boolean) || [],
// eslint-disable-next-line @typescript-eslint/no-explicit-any
referees: m.referees?.map((r: Record<string, any>) => r.name).filter(Boolean) || [],
};
}
@ -160,9 +171,10 @@ app.get('/api/live', async (_req: Request, res: Response) => {
const { data } = await axios.get(url, { headers: buildHeaders(), params: { status: 'LIVE' } });
const matches = (data.matches || []).map(normalizeMatch);
res.json({ count: matches.length, matches, fetchedAt: new Date().toISOString() });
} catch (err: any) {
const status = err?.response?.status || 500;
res.status(status).json({ error: 'Failed to fetch live matches', details: err?.response?.data || err?.message });
} catch (err: unknown) {
const axErr = err as { response?: { status?: number; data?: unknown }; message?: string };
const status = axErr?.response?.status || 500;
res.status(status).json({ error: 'Failed to fetch live matches', details: axErr?.response?.data || axErr?.message });
}
});
@ -191,13 +203,14 @@ app.get('/api/matches', async (req: Request, res: Response) => {
});
const matches = (data.matches || []).map(normalizeMatch);
res.json({ count: matches.length, matches, fetchedAt: new Date().toISOString() });
} catch (err: any) {
const status = err?.response?.status || 500;
res.status(status).json({ error: 'Failed to fetch matches', details: err?.response?.data || err?.message });
} catch (err: unknown) {
const axErr = err as { response?: { status?: number; data?: unknown }; message?: string };
const status = axErr?.response?.status || 500;
res.status(status).json({ error: 'Failed to fetch matches', details: axErr?.response?.data || axErr?.message });
}
});
app.listen(PORT, () => {
// eslint-disable-next-line no-console
console.log(`[server] Listening on http://localhost:${PORT}`);
});

View File

@ -27,7 +27,7 @@ type ApiResponse = {
fetchedAt: string;
};
function useFetchOnce<T>(fn: () => Promise<T>) {
function _useFetchOnce<T>(fn: () => Promise<T>) {
const [data, setData] = useState<T | null>(null);
const [error, setError] = useState<string | null>(null);
const [loading, setLoading] = useState<boolean>(true);
@ -41,8 +41,8 @@ function useFetchOnce<T>(fn: () => Promise<T>) {
setData(result);
setError(null);
}
} catch (e: any) {
if (mounted) setError(e?.message || 'Failed to fetch');
} catch (e: unknown) {
if (mounted) setError(e instanceof Error ? e.message : 'Failed to fetch');
} finally {
if (mounted) setLoading(false);
}
@ -57,14 +57,13 @@ async function fetchJson<T>(url: string, init?: RequestInit): Promise<T> {
const res = await fetch(url, { cache: 'no-store', ...init });
if (!res.ok) {
const text = await res.text();
let body: any = null;
let body: unknown = null;
try { body = text ? JSON.parse(text) : null; } catch { /* noop */ }
const err: any = new Error(`HTTP ${res.status}`);
err.status = res.status;
err.body = body;
const err: { message: string; status: number; body: unknown; waitSec?: number } = { message: `HTTP ${res.status}`, status: res.status, body };
// Try to derive wait seconds for 429 from body.details.message like: "You reached your request limit. Wait 56 seconds."
if (res.status === 429) {
const msg: string | undefined = body?.details?.message || body?.message || body?.error;
const details = body as Record<string, unknown> | null;
const msg: string | undefined = (details?.message as string) || (details?.error as string) || (details?.details as Record<string, unknown>)?.message as string | undefined;
const m = msg ? msg.match(/(\d+)\s*seconds?/) : null;
if (m) err.waitSec = Number(m[1]);
}
@ -143,18 +142,19 @@ function useBackoffUntilSuccess<T>(fn: () => Promise<T>, opts?: { baseDelaySec?:
clearTimers();
setData(result);
setError(null);
} catch (e: any) {
} catch (e: unknown) {
if (!mounted) return;
const httpErr = e as { status?: number; waitSec?: number; message?: string };
// 429: backoff and retry
if (e?.status === 429) {
const suggested = Number(e?.waitSec) || delayRef.current || base;
if (httpErr?.status === 429) {
const suggested = Number(httpErr?.waitSec) || delayRef.current || base;
const next = Math.min(max, Math.max(base, suggested));
delayRef.current = Math.min(max, Math.ceil(next * factor));
setError(`Rate limited. Retrying in ${next}s...`);
scheduleRetry(next);
return;
}
setError(e?.message || 'Failed to fetch');
setError(httpErr?.message || 'Failed to fetch');
} finally {
inFlightRef.current = false;
if (mounted) setLoading(false);

View File

@ -125,7 +125,7 @@ export class AppComponent {
// Iterate through possible values of n1, which must be multiples of x, at least y, and not more than z
for (let n1 = y; n1 <= ml - y && n1 <= z; n1 += x) {
let n2 = ml - n1;
const n2 = ml - n1;
// Ensure n2 is also a multiple of x, n2 >= y, and n2 <= z
if (n2 % x === 0 && n2 >= y && n2 <= z) {
results.push([n1, n2]);