Dobrý den,
v C už nějaký čas amatérsky dělám, ale teď jsem se na dost hodin sekl na jednom problému.
Dělám úplně stupidní slovníček... Nějak jsem se to snažil splácat, ale zasek jsem se na tom, že když přidám slovo, tak se sice přidá, ale jakmile přidám jiné nové, tak se přepíše i to předešlé, co jsem přidal. Prosím o radu, díky. :/
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <vector>
using namespace std;
void options(void);
void print_dictionary(void);
char *add_word(void);
void find_word(void);
char *dictionary[100];
char cz[15];
char en[15];
czech[0] = "kocka";english[0] = "cat";
czech[1] = "pes";english[1] = "dog";
czech[2] = "kachna";english[2] = "duck";
std::vector<char*> czech(100);
std::vector<char*> english(100);
int main()
{
dictionary[0] = "auto";
dictionary[1] = "kachna";
dictionary[2] = "zidle";
while(1)
{
options();
}
}
void options(void)
{
int i;
cout << "1. Hledat slovo" << endl;
cout << "2. Vypsat ulozena slova" << endl;
cout << "3. Pridat slovo do slovniku" << endl;
cout << "4. Odebrat slovo ze slovniku" << endl;
cout << "5. Ukoncit program" << endl << endl;
cout << "Zadejte volbu: ";
cin >> i;
cout << endl;
switch (i) {
case 1:
/* 1. Hledat slovo */
find_word();
break;
case 2:
/* 2. Vypsat ulozena slova */
print_dictionary();
break;
case 3:
/* 3. Pridat slovo do slovniku */
add_word();
break;
case 4:
/* 4. Odebrat slovo ze slovniku */
break;
default:
/* 5. Ukoncit program */
system("CLS");
break;
}
}
void print_dictionary(void)
{
/* Cyklus zjistujici nejblizsi volnou pozici */
for (int empty_position = 0; czech[empty_position] != 0; empty_position++) {
//////////////// !!!!!!!!!!!!!!!!!!!!!!!! <- jakmile nejaky smazes, tak jsem v riti :D
cout << czech[empty_position] << "\t\t\t" << english[empty_position] << endl;
}
}
char * add_word()
{
int empty_position;
// Cyklus zjistujici nejblizsi volnou pozici //
for (empty_position = 0; czech[empty_position] != 0; empty_position++);
cout << empty_position << endl;
cout << "Zadejte ceske slovo: " << endl;
cin >> cz;
czech[empty_position] = cz;
cout << "Zadejte anglicke slovo: " << endl;
cin >> en;
english[empty_position] = en;
for (int empty_position = 0; czech[empty_position] != 0; empty_position++) {
//////////////// !!!!!!!!!!!!!!!!!!!!!!!! <- jakmile nejaky smazes, tak jsi v riti :D
cout << empty_position << "\t" << czech[empty_position] << "\t\t\t" << english[empty_position] << endl;
}
}
void find_word(void)
{
char word[15];
int condition = 0;
cout << "Zadejte slovo, ktere chcete hledat:" << endl;
cin >> word;
for(int i = 0;strcmp(word, dictionary[i]) == 0; i++)
{
cout << "Anglicky preklad slova " << word << " je: " << dictionary[i] << endl << endl;
condition = 1;
}
for(int j = 0;strcmp(word, dictionary[j]) == 0; j++)
{
cout << "Cesky preklad slova " << word << " je: " << dictionary[j] << endl << endl;
condition = 1;
}
if(condition == 0)
{
cout << "Zadane slovo slovnik nezna" << endl << endl;
}
}