logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

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

HESTA 27 Lis 2008 08:20 6057 7
REKLAMA
  • #1 5788507
    HESTA
    Poziom 11  
    Posty: 21
    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:

    
    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?
  • REKLAMA
  • REKLAMA
  • #3 5789036
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #4 5789079
    HESTA
    Poziom 11  
    Posty: 21
    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++

    #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ę.
  • #5 5789116
    Dr.Vee
    VIP Zasłużony dla elektroda
    Posty: 1784
    Pomógł: 307
    Ocena: 76
    #include <iostream>
    #include <cctype>
    
    char c;
    while (std::cin >> c) {
        std::cout << (char)std::toupper(c);
    }

    Pozdrawiam,
    Dr.Vee
  • #6 5791125
    HESTA
    Poziom 11  
    Posty: 21
    Gdy znajdzie się spacja pomiędzy słowami to program się wywala - przy ciągłym tekscie wszystko jest już dobrze.

    #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();
    }
  • REKLAMA
  • Pomocny post
    #7 5791241
    Dr.Vee
    VIP Zasłużony dla elektroda
    Posty: 1784
    Pomógł: 307
    Ocena: 76
    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():
    #include <string>
    #include <iostream>
    
    std::string napis;
    std::getline(std::cin, napis); // wczytaj cały wiersz do napisu


    Pozdrawiam,
    Dr.Vee
  • #8 5801264
    HESTA
    Poziom 11  
    Posty: 21
    No to powstało takie cosik:

    #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.

Podsumowanie tematu

✨ Dyskusja dotyczy stworzenia programu w języku C++, który wczytuje tekst i zamienia wszystkie litery na wielkie. Przykład w Pascalu został przedstawiony jako wzór działania. Wskazano użycie funkcji toupper() z nagłówka cctype (ctype.h) do konwersji znaków na wielkie litery. Zaproponowano implementację w C++ z wykorzystaniem pętli przetwarzającej każdy znak tekstu. Omówiono problem wczytywania tekstu z białymi znakami, gdzie operator std::cin >> string pomija spacje, co powodowało błędy. Rozwiązaniem jest użycie funkcji std::getline() do wczytania całej linii tekstu wraz ze spacjami. Ostatecznie zaprezentowano kompletny program w C++, który wczytuje cały wiersz tekstu, zamienia litery na wielkie za pomocą toupper() i wyświetla wynik. Program jest prosty, efektywny i może służyć jako wzór dla podobnych zastosowań.
Wygenerowane przez model językowy.
REKLAMA