» »

Povečevanje števil [C]

Povečevanje števil [C]

RatedR ::

Lp, imam manjšo težavo s sicer lahko nalogo, sam nevem kako jo rešit

Napisat moram program, ki povečuje vrednost spremenljivke za 1 ko uporabnik pritisne tipko 'p', in zmanjša za 1 ko pritisne 'm', zraven se pa prikaže vrednost ob vsakem pritisku.
Ko se uporabnik odloči da bo nehal pritiskat 'p' ali 'm' lahko pritisne 'x' da se izpiše končna vrednost.

Torej jaz si to predstavljam tako nekak:

#include<stdio.h>

int main(void)
{
    
    printf("Pritisnite 'p', da povecate stevilo\n");
    printf("Pritisnite 'm', da zmanjsate stevilo\n");
    printf("Pritisnite 'x', za konec programa\n\n");
    
    int iVrednost = 1;
    char cVnos;
    scanf("%c", &cVnos);
    
   
    while(cVnos == 'p')
    {
          iVrednost = iVrednost + 1;
          printf("%d", iVrednost);
          }
        
    while(cVnos == 'm')
    {
              iVrednost = iVrednost - 1;
              printf("%d", iVrednost);
              }
              
    if(cVnos == 'x')
    {
         printf("%d", iVrednost);
         return 0;
         }
    
    if(!(cVnos == 'c' && cVnos == 'm' && cVnos == 'x'))
    {
        printf("Napacen vnos!");
        }
          
    getch();
    }

Stvar v neskončno zanko, rabim sam neko osnovno idejo kako naredit da mi ne gre v neskončno zanko.
Hvala!
  • spremenilo: RatedR ()

Randomness ::

Rabiš samo eno zanko, znotraj katere kličeš scanf. Pri tem pazi, da scanf prebere le en znak, ampak šele po pritisku tipke ENTER.

RatedR ::

Randomness je izjavil:

Rabiš samo eno zanko, znotraj katere kličeš scanf. Pri tem pazi, da scanf prebere le en znak, ampak šele po pritisku tipke ENTER.

Ne razumem čist, sepravi eno while zanko sam kakšnen je pa pogoj pa kje preverjam kaj je uporabnik pritisnil?
Problem mam samo s tem delom:

    int iVrednost = 1;
    char cVnos;
    scanf("%c", &cVnos);
    
   
    while(cVnos == 'p')
    {
          iVrednost = iVrednost + 1;
          printf("%d", iVrednost);
          }
        
    while(cVnos == 'm')
    {
              iVrednost = iVrednost - 1;
              printf("%d", iVrednost);
              }

Randomness ::

Problem mam samo s tem delom
Ne, problem imaš z razumevanjem osnov. Sem že zgoraj napisal, da mora biti klic scanf - to je branje s standardnega vhoda - znotraj zanke. Mogoče te mede to, da želiš izvesti branje pred preverjanjem pogoja, če pa boš prestavil branje v zanko, potem se bo pogoj preveril še preden bo uporabnik pritisnil tipko ... V tem primeru bi bilo to res, vendar se to zaobide na različne načine. Eden izmed njih je ta, da while {} zanko spremeniš v do {} while zanko. Npr.
do {
  scanf("%c", &cVnos); // pazi: tukaj preberemo le en znak (znak za novo vrstico se bo prebral šele v naslednji iteraciji zanke)
  if (cVnos == 'p') ...
  else if (cVnos == 'm') ...
  else if ...
} while (cVnos != 'x');

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Neznan problem [C]

Oddelek: Programiranje
112648 (2359) Snackbarru
»

c napaka .c:4:1: error: expected identifier or '(' before '{' token

Oddelek: Programiranje
141903 (1476) MrStein
»

[C] kazalčni seznam

Oddelek: Programiranje
123003 (2817) MrBrdo
»

[C] čuden izpis iz txt dat. na zaslon

Oddelek: Programiranje
121650 (1387) l0g1t3ch
»

[c] char zadeva

Oddelek: Programiranje
222210 (2008) TheCyborg

Več podobnih tem