Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
BF extended 2022

Diskuze: Přepis části pole vstupem

Aktivity
Avatar
David Hozík
Člen
Avatar
David Hozík:26.4.2018 23:16

Ahoj, učím se je tak pro sebe programovat v C++ a řekl jsem si, že si své doposud získané znalosti otestuju naprogramováním klasické šibenice. Narazil jsem teď ale na takový problém.
Program už umí zadané slovo převést do šifrované podoby, třeba "ahoj" do "----". Nedokážu však přijít na to, když jako uživatel zvolím vstup třeba "a", aby se pak šifra změnila na "a---". Jdu na to změnou v poli, tedy program zjistí, na kterém místě je daný znak a tam pole změní.
Pokud v programu napíšu "(sheslo[pozice] = 'x');", logicky to udělá na dané pozici písmeno "x". Já však potřebuji, aby místo "x" vložil program na danou pozici znak, který uživatel předtím do programu vložil, když hádá písmeno. Pokud to však upravím na "(sheslo[pozice] = vlozeno);", kde "vlozeno" je proměnná ze vstupu, neproběhne kompilace a nahlásí to chybu: error: cannot convert ‘std::string {aka std::basic_strin­g<char>}’ to ‘char’ in assignment. Jakým způsobem se to tedy dá řešit?
Omlouvám se za možná hloupý dotaz, ale s programováním začínám a už si tím lámu hlavu pár dní.

 
Odpovědět
26.4.2018 23:16
Avatar
Matěj Prášek:26.4.2018 23:50

Jestli jsem Tě dobře pochopil, tak vkládáš do pole charů celý řetězec. A jestli dobře chápu a vlozeno má být jeden znak, který uživatel zadal, zkus vlozeno[0].

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
26.4.2018 23:50
Avatar
DarkCoder
Člen
Avatar
Odpovídá na David Hozík
DarkCoder:27.4.2018 1:35

Třeba takto:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>

int main(void) {

        char secret[20];
        char str[20];
        int c;
        int i;
        int n = 0;

        strcpy(secret, "www.itnetwork.cz");
        memset(str, '-', strlen(secret));
        str[strlen(secret)] = '\0';

        printf("%s\n\n", str);
        while (n < ((int) strlen(secret))) {
                printf("Zadej znak: ");
                c = getchar();
                fseek(stdin, 0, SEEK_END);

                i = 0;
                while (secret[i]) {
                        if ((secret[i] == c) && (str[i]!= c)) {
                                str[i] = c;
                                n++;
                        }
                        i++;
                }
                printf("%s\n\n", str);
        }

        return 0;
}
Nahoru Odpovědět
27.4.2018 1:35
"Chceš-li předávat své znalosti, měj kvalitní podklady."
Avatar
David Hozík
Člen
Avatar
Odpovídá na Matěj Prášek
David Hozík:30.4.2018 21:48

Děkuju, vlozeno[0] pomohlo.

 
Nahoru Odpovědět
30.4.2018 21:48
Avatar
DarkCoder
Člen
Avatar
Odpovídá na David Hozík
DarkCoder:30.4.2018 22:18

Můžeš sem vložit celý svůj kód? Mám takové tušení, že způsob, jakým načítáš vstupní data od uživatele, bude trochu kostrbatý (řetězec místo pouhého znaku). Na vstupu očekáváš znak a to indexování nevyžaduje.

Nahoru Odpovědět
30.4.2018 22:18
"Chceš-li předávat své znalosti, měj kvalitní podklady."
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.