Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 4 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
C výpis cisle

Registrovaný: 15.07.13
Prihlásený: 27.05.18
Príspevky: 243
Témy: 42
Príspevok NapísalOffline : 15.04.2017 11:09

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
Offline

Správca fóra
Správca fóra
C výpis cisle

Registrovaný: 08.08.09
Príspevky: 12449
Témy: 39
Príspevok NapísalOffline : 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
Offline

Užívateľ
Užívateľ
C výpis cisle

Registrovaný: 15.07.13
Prihlásený: 27.05.18
Príspevky: 243
Témy: 42
Príspevok Napísal autor témyOffline : 15.04.2017 12:58

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
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 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!
Odpovedať na tému [ Príspevkov: 4 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Zistenie či cifry v čísle stupaju/klesaju

v Assembler, C, C++, Pascal, Java

6

425

09.02.2017 8:22

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vypis

v PHP, ASP

13

1000

26.06.2008 10:53

GoodWill Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zoradeny vypis

v PHP, ASP

1

330

02.05.2012 7:09

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. rozdvojený výpis?

v PHP, ASP

4

351

21.06.2014 9:16

MasterMatoSK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. výpis adresárov

v PHP, ASP

11

640

14.05.2008 21:52

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. percentualny vypis

v PHP, ASP

4

449

23.05.2010 21:53

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Výpis php

v PHP, ASP

11

591

14.04.2011 15:58

w3r0 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vypis dni

v PHP, ASP

6

732

19.11.2010 13:30

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vypis mailov

v Ostatné

3

482

27.08.2010 15:51

1987123 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Výpis zložky

v PHP, ASP

6

480

30.05.2012 20:04

xxx9955 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. výpis zariadení

v Operačné systémy Microsoft

14

578

17.02.2016 21:06

bobino38 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vypis adresara

v PHP, ASP

3

606

16.12.2009 22:25

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. MySQL vypis

v Databázy

1

313

07.01.2014 15:34

kudzo3 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Stromový výpis

v Sieťové a internetové programy

0

424

19.02.2008 15:29

dsljohn Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Výpis zo súboru

v Ostatné programy

1

565

26.03.2007 23:32

Itanium Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zlý výpis - Android

v Android, iOS, Windows Phone (Mobile)

2

510

27.04.2015 21:50

LukasB Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra