| | |
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Autor | Správa |
---|
Registrovaný: 15.07.13 Prihlásený: 27.05.18 Príspevky: 243 Témy: 42 |
Dobrý deň, neviem si s týmto zadaním rady Zadanie:Napíšte program ktorý vypisuje prirodzené čísla od 1. Po každých desiatich číslach vypíše dotaz Mam pokračovať [A/N]? a podľa typu odpovedi skončí. môj problém spočíva v tom že kde vypíše dotaz za 10 je tam raz ale keď dám a||A tak po 20 je tam už dva krát kde je zrada? Kód: #include <stdio.h> #include <stdlib.h>
int main() { int c,v=1,i=0; while(1){ while (i<=9){ i++; printf("%d\n",v); v++; } printf("Mam pokracovat? [A/N]\n"); c=getchar(); if(c=='a'|| c=='A'){ i=0; } else if (c=='n'|| c=='N'){ exit(1); } } return 0; }
_________________ PC: MB MSI 970A-G43 CPU AMD FX6300 6*3,50GHt turbo 4,1Ghz GPU Gigabyte r7 370 windforce oc edition 2GB Ram 8GB Kingston fury hyperx 1866Mhz SSD:Kingston SSDNow V300 120GB HDD:Seagete baracuda 1TB 7200rpm HDD2 Samsung HD502HJ 500GB 7200RPM PSU fortron hexa + 500W cpu chladič zalman CNPS5X Performa NOTEBOOK:HP Elitebook 8460p Tablet:Prestigio visconte Quad: Mobil: Microsoft Lumia 640 Dual sim
Auto:Chevrolet camaro 1986 IROC-Z |
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | Napísal killer: 15.04.2017 12:24 | |
|
Potrebuješ na to vážne cyklus v cykle? Dvakrát ti to vypíše preto, že funkcia [c]getchar()[/c] načíta len jeden znak z vrcholu vstupného zásobníka (čím ho odstráni) a ostatné nechá tak ako sú. Takže to znamená, že po spustení programu vypíšeš prvých desať číslic, vypíšeš otázku a čakáš na vstup od používateľa - ten zadá znak (akýkoľvek, dúfaš že je jeden - toto si skús ošetriť sám, aby keď zadáš "aaa" vypísalo len jednu dekádu číslic a nie tri) a enter, lenže zrada je v tom, že aj to je znak ako každý iný. Preto tvoj [c]getchar()[/c] vyberie ten prvý "platný" znak, ale v zásobníku stále zostáva minimálne ešte ten enter - ten sa vyberie pri nasledujúcej iterácií a keďže to nemáš ošetrené, správa sa to takto. Kód: #include <stdio.h> #include <stdlib.h>
int main() { int i = 0; // iterator
int stop = 10; // pomocna premenna int pokracuj = 1; // flag
while (pokracuj == 1) { stop--; i++; // iterator zvysis o jedna printf("%d\n", i); // vypises cislo
if (stop == 0) { printf("Mam pokracovat? [A/N]\n"); int c = getchar(); getchar(); // nacitas este "enter" - da sa pouzit aj scanf, najdi si o tom nieco // TODO: osetrit viac ako jeden zadany znak (..aaa, aan, an)
if (c == 97 || c == 65) { // pokracujeme pokracuj = 1; } else if (c == 110 || c == 78) { // nepokracujeme pokracuj = 0; } else { printf("!!! neplatny znak\n"); // nepokracujeme - chyba pokracuj = 0; } stop = 10; // reset pomocnej premennej } } return 0; }
_________________ always is always wrong |
|
Registrovaný: 15.07.13 Prihlásený: 27.05.18 Príspevky: 243 Témy: 42 |
Aha pochopil som ďakujme pekne za pomoc
_________________ PC: MB MSI 970A-G43 CPU AMD FX6300 6*3,50GHt turbo 4,1Ghz GPU Gigabyte r7 370 windforce oc edition 2GB Ram 8GB Kingston fury hyperx 1866Mhz SSD:Kingston SSDNow V300 120GB HDD:Seagete baracuda 1TB 7200rpm HDD2 Samsung HD502HJ 500GB 7200RPM PSU fortron hexa + 500W cpu chladič zalman CNPS5X Performa NOTEBOOK:HP Elitebook 8460p Tablet:Prestigio visconte Quad: Mobil: Microsoft Lumia 640 Dual sim
Auto:Chevrolet camaro 1986 IROC-Z |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 15.04.2017 13:00 | |
|
Ten enter tam ostáva vždy, takže stačí pridať naviac jedno volanie getchar() v prípade, že pokračujeme a hotovo. To jedno volanie naviac "zhltne" ten enter (nič viac nebude robiť, jednoducho ho zahodí) a program bude fungovať správne.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Zistenie či cifry v čísle stupaju/klesaju v Assembler, C, C++, Pascal, Java | 6 | 425 | 09.02.2017 8:22 BX | | Vypis v PHP, ASP | 13 | 1000 | 26.06.2008 10:53 GoodWill | | zoradeny vypis v PHP, ASP | 1 | 330 | 02.05.2012 7:09 BX | | rozdvojený výpis? v PHP, ASP | 4 | 351 | 21.06.2014 9:16 MasterMatoSK | | výpis adresárov v PHP, ASP | 11 | 640 | 14.05.2008 21:52 Tominator | | percentualny vypis v PHP, ASP | 4 | 449 | 23.05.2010 21:53 rooobertek | | Výpis php v PHP, ASP | 11 | 591 | 14.04.2011 15:58 w3r0 | | Vypis dni v PHP, ASP | 6 | 732 | 19.11.2010 13:30 emer | | vypis mailov v Ostatné | 3 | 482 | 27.08.2010 15:51 1987123 | | Výpis zložky v PHP, ASP | 6 | 480 | 30.05.2012 20:04 xxx9955 | | výpis zariadení v Operačné systémy Microsoft | 14 | 578 | 17.02.2016 21:06 bobino38 | | vypis adresara v PHP, ASP | 3 | 606 | 16.12.2009 22:25 stenley | | MySQL vypis v Databázy | 1 | 313 | 07.01.2014 15:34 kudzo3 | | Stromový výpis v Sieťové a internetové programy | 0 | 424 | 19.02.2008 15:29 dsljohn | | Výpis zo súboru v Ostatné programy | 1 | 565 | 26.03.2007 23:32 Itanium | | Zlý výpis - Android v Android, iOS, Windows Phone (Mobile) | 2 | 510 | 27.04.2015 21:50 LukasB |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|