Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Program zamieniający mały litery na wielkie [Pascal/C++]

27 Nov 2008 08:20 5013 7
  • Level 10  
    Witam.

    Potrzebuje program, który wczytuje "jakiś tam tekst", a następnie wszystkie litery zamienia na wielkie i wyświetla je.


    Napisałem takie coś w Pascalu i działa poprawnie:

    Code:

    program zamianaliternaduze;


    var

      wyraz, nwyraz : string;
      a, l : char;
      n : byte;
      dlugosc, i : integer;

    begin

      writeln('Podaj wyraz:');
      readln(wyraz);
      dlugosc:=length(wyraz);

      for i:=1 to dlugosc do
        begin
          a:=wyraz[i];
          n:=ord(a);

            if (n >= 97) and  (n <= 122) then
              begin
                n:=n-32;
              end

            if (n >= 65) and (n <=122) then
              begin
                l:=chr(n);
                nwyraz:=nwyraz+l;
              end;

        end;

      writeln;
      writeln('Nowy wyraz to: ', nwyraz);
      readln;

    end.



    A potrzebuje ten program w języku C++ może ktoś pomoże?
    [30.03.2021, darmowy webinar] Nowoczesna diagnostyka maszyn, monitorowanie i przewidywanie awarii. Zarejestruj się
  • Helpful post
    VIP Meritorious for electroda.pl
    Zobacz nagłówek ctype.h (albo cctype w C++) i funkcję
    Code:
    int toupper(int c);
    Pozdrawiam,
    Dr.Vee
  • User removed account  
  • Level 10  
    W PASCAL'u lepiej idzie więc miał być to przykład co chce stworzyć (a zarazem wzór).

    Po szybkiej nauce utworzyłem w C++

    Code:
    #include <iostream>
    
    #include <cctype>

    using namespace std;

    int main()
    {
      char ch;

      cout<<"Wpisz tekst: ";
      cin>> ch;

     
      ch = toupper (ch);
      cout<<ch;
     
      getchar();
      cin.get();
    }


    Teraz jeszcze to zapętlić, bo tak to zamienia tylko jedną literę.
  • VIP Meritorious for electroda.pl
    Code:
    #include <iostream>
    
    #include <cctype>

    char c;
    while (std::cin >> c) {
        std::cout << (char)std::toupper(c);
    }

    Pozdrawiam,
    Dr.Vee
  • Level 10  
    Gdy znajdzie się spacja pomiędzy słowami to program się wywala - przy ciągłym tekscie wszystko jest już dobrze.

    Code:
    #include <iostream> 
    
    #include <cctype>

    using namespace std;

    int main()
    {
      char ch;
      string tekst;
      string ntekst;
      int dlugosc;
     
      cout << "Wpisz tekst: ";
      cin >> tekst;
     
      dlugosc = tekst.length();
     
      for(int i=0; i<=dlugosc-1; i++)
      {
      ch = tekst[i];
      ch = toupper(ch);
      ntekst = ntekst + ch;
      }

      cout << ntekst;

      getchar();
      cin.get();
    }
  • Helpful post
    VIP Meritorious for electroda.pl
    Nie próbowałeś mojego kodu? :)

    Standardowym zachowaniem operatorów pobrania napisu ze strumienia jest pomijanie białych znaków, tj. std::cin >> string oznacza: pomiń białe znaki, wczytuj nie-białe znaki, zatrzymaj wczytywanie gdy napotkasz biały znak.

    Jeśli koniecznie chcesz użyć klasy std::string, to skorzystaj z funkcji std::getline():
    Code:
    #include <string>
    
    #include <iostream>

    std::string napis;
    std::getline(std::cin, napis); // wczytaj cały wiersz do napisu


    Pozdrawiam,
    Dr.Vee
  • Level 10  
    No to powstało takie cosik:

    Code:
    #include <iostream>    
    
    #include <cctype>

    using namespace std;

    int main()
    {
      char ch;
      string tekst;    
      string ntekst;
                
      cout << "Program zmieniajacy wprowadzony tekst na duze litery." << endl << endl;
     
      cout << "Wpisz tekst: " << endl;
     
      std::getline(std::cin, tekst);
     
      for(int i=0; i<=tekst.length()-1; i++)
      {    
      ch = tekst[i];
      ch = toupper(ch);    
      ntekst = ntekst + ch;
      }    
     
      cout << ntekst << endl;   
      cin.get();
    }


    Podziękowania dla Dr.Vee

    Można temat zakończyć - a zamieszczony programik może komuś się przyda w przyszłości.