C++ programmaatje gevraagd welke een tekst om kan zetten

Status
Niet open voor verdere reacties.

Redboelleke

Gebruiker
Lid geworden
25 nov 2008
Berichten
5
Wie kan er mij een C++ programmaatje schrijven dat het volgende doet.
1. Je geeft een woord in
voorbeeld: helpmij
En de uitvoer zou dan moeten zijn
HeLpMiJ
(hoofdletter-klein letter-hoofdletter enz.....)
Alvast bedankt :thumb:
 
Code:
std::string convert(const std::string s)
{
	std::string ret;
	for(unsigned int i = 0; i < s.length(); i++)
		if(isalpha(s[i]))
			ret += ( i & 1 == 1 ? tolower(s[i]) : toupper(s[i]));
		else 
			ret += s[i];
	return ret;
}

Zoiets bedoel je ?
 
Laatst bewerkt:
Beste
ik ben echt een beginneling en werk met wx-devcpp en heb enkele vraagjes.
Moet ik dit stukje code in de maimzetten?
Hoe vul ik dit aan met cin >> "Geef woord in en cout << ......
Alvast bedankt
 
Laatst bewerkt:
Zoiets?

Code:
#include <string>
#include <iostream>

int main(void)
{
     std::string input;
     std::cout << "geef woord\n";
     std::getline(std::cin, input);
     std::cout << convert(input);
     return 0; 
}
 
Wat is er allemaal fout?
Help aub


#include <cstdlib>
#include <iostream>
#include <string>



using namespace std;

std::string convert(const std::string s)
{
std::string ret;
for(unsigned int i = 0; i < s.length(); i++)
if(isalpha(s))
ret += ( i & 1 == 1 ? tolower(s) : toupper(s));
else
ret += s;
return ret;
}



int main(int argc, char *argv[])
{

std::string input;
std::cout << "geef woord\n";
std::getline(std::cin, input);
std::cout << convert(input);
return 0;


system("PAUSE");
return EXIT_SUCCESS;
}
 
Waarschijnlijk wil je meer dan één woord omzetten ?

Code:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

std::string convert(const std::string s)
{
	std::string ret;
	for(unsigned int i = 0; i < s.length(); i++)
	    ret += (isalpha(s[i]) ? (i & 1 == 1 ? tolower(s[i]) : toupper(s[i])) : s[i]);  
	return ret;
}

int main(int argc, char *argv[])
{
    std::string s;
    while(1)
    {
            std::cout << "Input:  ";
            std::getline(std::cin, s);
            if(s == "quit")
               break;
            std::cout << "Output: " << convert(s) << '\n';
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}

Wanneer er nu 'quit' wordt ingevoerd stopt het programma. (is hoofdlettergevoelig op deze manier, maar gaat om het idee)

(heb de convert functie maar meteen wat korter gemaakt (netter is uiteraard relatief))


edit: even wat toelichting voor de TS, aangezien hij net begonnen is met C++;

Het std:: voor cout is de namespace die gebruikt wordt. Als je een standaard project aanmaakt, dan is meestal de regel 'using namespace std;' toegevoegd, waardoor je het 'std::' gedeelte weg kan laten. Al ziet dit er voor een beginner wat ingewikkelder uit dan het eigenlijk is.

Code:
ret += ( i & 1 == 1 ? tolower(s[i]) : toupper(s[i]));

Dit is eigenlijk gewoon een if-else statement. Het eerste gedeelte is de voorwaarde die gecontroleerd wordt, het gedeelte achter de vraagteken is hetgeen
uitgevoerd wordt wanneer de voorwaarde waar is en het gedeelte achter de dubbelepunt is hetgeen wat uitgevoerd wordt wanneer de voorwaarde niet waar is.

Het wordt dus:
voorwaarde ? wanneer_true : wanneer_false;

Dit komt dus eigenlijk op hetzelfde neer als:

Code:
if(i & 1 == 1)               // hier wordt (bitwise) gecontroleerd of het getal een (on)even getal is; Bij oneven getallen levert dit true op;
  ret +=  tolower(s[i]);  // je kunt hiervoor ook de modulo operator gebruiken, dat is misschien makkelijker voor je.
else
  ret += toupper(s[i]);

Ik hoop dat de code nu iets duidelijker is. :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan