Slovní fotbal – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Slovní fotbal – C / C++ – Fórum – Programujte.comSlovní fotbal – C / C++ – Fórum – Programujte.com

 

zstib0
Duch
18. 12. 2019   #1
-
0
-

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;
}
Nahlásit jako SPAM
IP: 195.178.92.–
gna
~ Anonymní uživatel
1849 příspěvků
18. 12. 2019   #2
-
0
-

Některá pole inicializuje a jiná ne.

Jednou kopíruješ řetězec pomocí strcpy a pak zase po znacích. Někde řetězec ukončuješ nulovým znakem a jinde zase ne.

Při výpisu historie slov hlídáš jejich počet, ale při prohledávání ne.

Slovo do historie přidáváš bez ohledu na to jestli bylo platné.

Kód v tom defaultu ve switchi je nesmysl.

Moc pečlivě jsem to nečetl, ale jako máš tam všechno, co potřebuješ, takže ty věci znáš. Jen ses moc nesnažil :) Tak zkus tyhle věci poladit a pak ti napíšu(-eme) další :)

Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1849 příspěvků
18. 12. 2019   #3
-
0
-

Takže klucí, jestli si jen přehazujete kód, který nikdo z vás nenapsal, tak já v tomhle vlákně končím.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 34 hostů

Podobná vlákna

Slovni fotbal — založil Dominik Rozporka

Slovni fotbal — založil fotbal

Slovni fotbal po x-té — založil stoponozka

Slovní úloha — založil RocketBG

Slovní úloha — založil Veronika

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý