C - obsługa wejścia/wyjścia i pętlenie programu

0

Witam, muszę napisać program, który:

  • wczytuje znak z klawiatury
  • gdy znakiem jest duza litera alfabetu zmienia ja na mala
  • w przeciwnym wypadku wczytuje liczbe rzeczywista i oblicza wartosc pewnego wyrazenia

Napisałem jakiś program (jestem początkującym), lecz mam problem z pętlą. Byłbym wdzięczny jakby ktoś poprawił ten program.

 #include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main (void) {

float x,y;

printf ("Podaj litere:\n");

scanf ("%c", &x);

if ((x >= '65') && (x <= '90')) {

x=x+'32';

printf("Zmieniona litera to: %c\n",x);

}

else {

printf ("Podaj y:\n");

scanf ("%f", &y);

y=x*pow(x,2)*pow(x,3);

printf("Wpisales mala litere i y=%.4f\n",y);



}

system("PAUSE");

return EXIT_SUCCESS;

}
1

To czy znak jest dużą czy małą literą lepiej chyba sprawdzać funkcją http://www.cplusplus.com/reference/cctype/isupper/
A potem zamienić ją na małą funkcją http://www.cplusplus.com/reference/cctype/tolower/
Oczywiście jeżeli jest to zadanie do szkoły i musisz samemu to sprawdzić, to funkcje takie możesz napisać też samemu ( teraz jest to prosty przykład, ale w większym projekcie możesz kiedyś korzystać z mniej oczywistych "kruczków" i jak wrócisz do kodu po miesiącu, nie będziesz miał pojęcia o co chodziło, a jak będzie to upakowane w funkcję to po nazwie się domyślisz ).
Poza tym, co za sens ma pisanie xx2x</sup>3? To nie jest to samo co x^6?
A jeśli chodzi o pętle to też nie mam pojęcia o co może chodzić :/

0

Problem masz z brakiem formatowania, tak to ci zaciemnia obraz że nawet nie zauważyłeś że wciąż nie masz tej pętli.

1

"napisalem jakis program" - to wszystko wyjasnia ;)

Tu masz sformatowany kod.

 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (void) 
{
      float x,y;
      printf ("Podaj litere:\n");
      scanf ("%c", &x);
      if ((x >= '65') && (x <= '90')) 
      {
           x=x+'32';
           printf("Zmieniona litera to: %c\n",x);
      }
      else 
      {
           printf ("Podaj y:\n");
           scanf ("%f", &y);
           y=x*pow(x,2)*pow(x,3);
           printf("Wpisales mala litere i y=%.4f\n",y);
     }
     system("PAUSE");
     return EXIT_SUCCESS;
}

Zapoznaj się z tym:

http://www.cplusplus.com/reference/cctype/tolower/
http://www.cplusplus.com/reference/cctype/toupper/
http://www.cplusplus.com/reference/cctype/isupper/
http://www.cplusplus.com/reference/cctype/islower/

Pisze w C++ i uzyję do drukowania cout<< oraz wprowadzania cin>>.
tak więc, proponuję wszystko wpierw umieścić w pętli, z której wyjdziemy po naciśnięciu jakiegoś unikalnego klawisza:

 
char znak;
while(cin >> znak && znak != '0')
{
     
}

na początku wprowadzamy znak i następnie sprawdzamy, czy znak jest różny od znaku '0'. jesli jest różny, wykonujemy ciało pętli. Jeśli nie, wychodzimy z niej. Tak więc pętla będzie się powtarzać do momentu aż nie klikniemy klawisza '0'.

Kolejnym krokiem będzie sprawdzenie z jaką litera mamy do czynienia:

 
if( isupper(znak) )
{
     cout<<odpowiednik malej litery to: "<< tolower(znak) << endl;
}
else
{
     cout<<"podales mala litere";
}

Z reszta sobie poradzisz.

0

Dzięki za pomoc. Program śmiga :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1