C++ převod každého druhého slova souboru na velká písmena

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod mozopom 7. 1. 2023 14:58

Zdravím,
mohla bych poprosit o radu?
Program si má přečíst textový soubor, převést každé druhé slovo na velká písmena a na konec každého řádku ještě něco připsat.
Chtěla bych se zeptat, zda by mi někdo neporadil, jak napsat podmínku, aby se převedlo na velká písmena pouze každé druhé slovo. Pomocí mojí funkce text_na_velka se mi totiž převádějí všechna slova. Existuje nějaký způsob, jak program pozná, že narazil na mezeru?
Zde přikládám, co jsem zatím napsala.

Děkuji za jakoukoli radu.

Kód: Vybrat vše
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

char na_velka(char c)
{
   if ((c >= 'a') && (c <= 'z'))
   {
      return c + 'A' - 'a';
   }
   else
   {
      return c;
   }
}

string text_na_velka(string text)
{

   string vysledek;
   int index = 0;
   while (index < text.length())
   {
      vysledek += na_velka(text[index++]);
   };
   return vysledek;
}


void chyba(const char* text)
{
   cout << "Nastala chyba pri:" << text << endl;
}


void cteni(const string& jmeno)
{
   ifstream soubor;
   soubor.open(jmeno, ios::in);
   if (soubor.is_open())
   {
      string radek;

      while (getline(soubor, radek))
      {
         cout << text_na_velka(radek) << " konec radku" << endl;
      }
      soubor.close();
   }
   else
   {
      chyba("cteni");
   }
}


int main()
{
   cteni("soubor.txt");
}
mozopom
Kolemjdoucí

Odeslat příspěvekod Just_jo 7. 1. 2023 18:12

Tak na konverzi by asi mělo být toupper
https://www.digitalocean.com/community/ ... -plus-plus

Pro rozdělení slov by šlo zkusit tento přístup - není nezbytně nutné to házet do array, ale zkus pochopit postup.
https://stackoverflow.com/questions/264 ... array-item
Just_jo
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 7. 1. 2023 19:12

Tak už teď tam máš podmínku, jeslti je znak mezi a-z (včetně). Napsat podobnou, která by poznávala mezeru, je snad naprosto primitivní.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod mozopom 7. 1. 2023 19:42

Už mi to funguje, děkuji
mozopom
Kolemjdoucí


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků