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

Visual Studio 2017 – C / C++ – Fórum – Programujte.comVisual Studio 2017 – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
LuKeSkO0
Duch
27. 10. 2017   #1
-
0
-

Ahojte,

Potreboval by som pomoct s jednym programom, ktore sme dostali v skole:

Napíšte program, ktorý z poľa znakov vymaže všetky výskyty podreťazca ako trojice znakov. Obsah poľa najviac 50 znakov načítajte ako prvý riadkok vstupu zo štandardného vstupu. Druhý riadok vstupu bude obsahovať 3 znaky. Výstupom programu bude obsah poľa po zmazaní všetkých výskytov 3-znakového podreťazca.
Ukážkový vstup:
qwertabcasdfabczxc↵
abc↵
Ukážkový výstup:
qwertasdfzxc↵

Toto je moj kod, ktory som napisal:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char c[50], b[50], a[4];
int i, j = 0;
scanf("%49s", c);
scanf("%s", a);
for (i = 0; c[i] != '\0'; i++)
{
if (c[i] == a[0] && c[i + 1] == a[1] && c[i + 2] == a[2])
{
i += 2;
continue;
}
else
{
b[j] = c[i];
j++;
}
}
printf("%s\n", b);
system("PAUSE");
return 0;
}

A toto je jeho vystup: 

dadnaslndasndsnadnsaldnsladn
dad
naslndasndsnadnsaldnsladn╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠dadnaslndasndsnadnsaldnsladn
Press any key to continue . . .

Vedel by mi niekto povedat co tam mam zle a hlavne preco mi to vypisuje nejake symboly ktore tam ani nema? Predom dakujem.

Nahlásit jako SPAM
IP: 78.99.6.–
27. 10. 2017   #2
-
0
-

1. zvolil bych si vhodnější názvy proměnných. a, b, c je nicneříkající.
2. Pokud mám uložit řetězec o 50 znacích, je potřeba mít pole o velikosti 51.
3. V podmínce if je pravděpodobné, že sáhneš za konec pole. To znamená neoprávněný přístup do paměti.
 

Asi bych k věci přistoupil tak, že bych hledal v poli výskyt prvního znaku a teprve když na něj narazím bych testoval i výskyt druhého a třetího znaku.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
27. 10. 2017   #3
-
0
-

Až teď jsem si všiml, že načítáš 49 znaků, v zadání je 50. A ještě podstatná věc. Měnit hodnotu řídící proměnné cyklu v těle cyklu je nešťastné, v tomto případě cesta do pekel.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
LuKeSkO0
Duch
27. 10. 2017   #4
-
0
-

#3 hlucheucho
Ano dakujem za pomoc, uz to mam :)

Nahlásit jako SPAM
IP: 78.99.6.–
MilanL+1
Grafoman
2. 11. 2017   #5
-
0
-

#1 LuKeSkO
po skončení cyklu bys do pole b měl na poslední pozici vložit ukončovací znak '\0' jinak se ti tam objeví ty nesmysly  v podstatě co se ti tam objevilo je zbytý obsah pole b a za ním pole c, tak jak jsou v paměti alokované za sebou

Nahlásit jako SPAM
IP: 91.139.9.–
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, 4 hosté

Podobná vlákna

Visual studio — založil Hlavinka

Visual studio + QT — založil staf

MS Visual Studio — založil samo

Ktere visual studio — založil optokos

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ý