Zdravím,
dostal jsem za úkol udělat kod, který má dělat, že když uživatel zadá na standartní vstup slovo, ze ktereho se vezmou dve posledni pismena na ktere ma zacinat dalsi slovo. Kdyz se zada jeste nezadane slovo tak si jej pocitac ulozi do pameti. Uz se mi to povedlo naprogramovat tak aby to fungovalo ale bohuzel ucitel k tomu ma nejake vyhrady, se kterymi si nevym rady. Tak tady pisu s prosbou jesti by jste mi s tim neporadili.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define max 500
void menu() {
puts("Stisknete:\n"
"1 Pokud chcete pokracovat ve hre\n"
"2 Pokud chcete vypsat zadana slova\n"
"Pokud chcete ukoncit hru, zmacknete cokoli.");
}
int main(int cetnost, char *pole[]) {
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
char string[256] = { 0 }, pos2pis[256] = { 0 };
unsigned int x;
char novy[256];
char poleZnaku[256][256];
char uprava[256];
int napoveda = 0, znak, bylo, ukazatel = 0;
puts("Vitejte ve hre, zadejte slovo: ");
gets(string);
strcpy(poleZnaku[ukazatel], string);
menu();
while ((znak = getchar()) != EOF) {
switch (znak) {
case '1':
gets(uprava);
printf("Nynejsi slovo je: %s\n", string);
for (x = 0; x < (strlen(string) - 1); x++) {
pos2pis[0] = string[x];
pos2pis[1] = string[x + 1];
}
string[0] = 0;
printf("2 posledni znaky jsou: %s\n", pos2pis);
puts("zadejte dalsi slovo:");
gets(string);
bylo = 0;
for (int v = 0; v < 256; v++) {
if (strcmp(poleZnaku[v], string) == 0) {
bylo = 1;
puts("Bylo uz");
}
}
if (bylo == 0) {
if (string[0] == pos2pis[0]) {
if (string[1] == pos2pis[1]) {
for (int ha = 0; ha < strlen(string); ha++) {
novy[ha] = string[ha];
}
novy[strlen(string)] = 0;
napoveda = 1;
ukazatel++;
} else
napoveda = 0;
} else
napoveda = 0;
if (napoveda == 0) {
puts("zkuste jine slovo");
if (napoveda == 0) {
printf("zadejte dalsi slovo, ktere zacina: |%s|\n ",pos2pis); // Napoveda
gets(novy);
ukazatel++;
}
}
}
puts(novy);
for (int b = 0; b < strlen(novy); b++) {
poleZnaku[ukazatel][b] = novy[b];
}
if (bylo == 0) {
string[0] = 0;
printf("Nynejsi slovo je: %s\n", novy);
for (int j = 0; j < strlen(novy); j++) {
string[j] = novy[j];
}
}
novy[0] = 0;
menu();
break;
case '2':
for (int n = 0; n < ukazatel + 1; n++) {
printf("%d. %s\n", n, poleZnaku[n]);
}
break;
default:
if ((znak) != (1 || 2)) {
return EXIT_SUCCESS;
}
}
}
return 0;
}