Gå til innhold

[Løst] c++ hjelp - problemer med å convertere string til store bokstaver


Anbefalte innlegg

Hei!

Jeg spør om hjelp igjen jeg :)

Men jeg har nå lagd et program som sorterer en streng og sjekker om det er et anagram. Funker so far, men når jeg gjør alt om til uppercase så skjærer det seg.

Jeg har strengene i en tabell, men om det er en stor bokstav i strengen, så blir strengen til et tall. (Neste i ascii tabellen)

Vet ikke helt hvordan jeg skal løse dette.

Takk for hjelpen i allefall :)

 

Her har dere koden til uppercase:

 

char uppercase(char c)

{

if ((c>='a')||(c<='z'))

c -= 'a'-'A';

 

return c;

}

Lenke til kommentar
Videoannonse
Annonse

De fleste programmeringsspråk kan ikke addere eller subtraktere strenger direkte.

 

Man "oversetter" bokstaven til en byte før man trekker fra eller adderer.

 

Tror du finner svaret på dette forumet.

Funkjsonen hans opererer på en byte allerede.

 

Du må ha && i if-setningen, ettersom du vil at funksjonen skal kjøres på bokstaver fram og med 'a' til og med 'z', nå kjører den på bokstaver som er større eller lik 'a', ELLER, mindre eller lik 'z'.

Om det ikke er et krav at du skriver funksjonen selv, kan du bruke funksjonen toUpper i standardbiblioteket.

Lenke til kommentar
#include <iostream>
#include <string>
#include <cctype>

using namespace std;

template<class T>
void sort(T a[], int numberUsed);

template<class T>
void swapValues(T& variable1, T& variable2);

template<class T>
int indexOfSmallest(const T a[],int startIndex, int numberUsed);

char upperCase(char c);

int main()
{
const int SIZE = 13;
char stringA[size] = {'T', 'w', 'e', 'l', 'v', 'e', 'p', 'l', 'u', 's', 'o', 'n', 'e'};
char stringB[size] = {'e', 'l', 'e', 'v', 'e', 'n', 'p', 'l', 'u', 's', 't', 'w', 'o'};

cout << "Unsorted characters:\n";
for(int index = 0; index < SIZE; index++)
	cout << stringA[index] << " ";
cout << endl;

for(int index = 0; index < SIZE; index++)
	cout << stringB[index] << " ";

cout << endl;
sort(stringA, SIZE);
sort(stringB, SIZE);


cout << "In sorted order the characters are:\n";
char tabA[size];
for(int i = 0; i < SIZE; i++)
{
	cout << upperCase(stringA[i]);
	tabA[i] = stringA[i];
}
cout << endl;

char tabB[size];
for(int i = 0; i < SIZE; i++)
{
	cout << upperCase(stringB[i]);
	tabB[i] = stringB[i];
}
cout << endl;

   if((strcmp(tabA, tabB)) == 0)
       cout << "Its an anagrame, hurray!" << endl;
   else
       cout << "Sorry to disappoint you, but its not an anagram." << endl;

   return 0;

return 0;
}

char upperCase(char c)
{
if ((c>=65)&&(c<=122))
{
	if((c >=97)&&(c<=122))
		c -= 32;
}

return c;
}

template<class T>
void sort(T a[], int numberUsed)
{
int indexOfNextSmallest;
for(int index = 0; index < numberUsed; index++)
{
	indexOfNextSmallest = indexOfSmallest(a, index, numberUsed);
	swapValues(a[index], a[indexOfNextSmallest]);
}
}

template<class T>
void swapValues(T& variable1, T& variable2)
{
T temp;

temp = variable1;
variable1 = variable2;
variable2 = temp;
}

template<class T>
int indexOfSmallest(const T a[], int startIndex, int numberUsed)
{
T min = a[startIndex];
int indexOfMin = startIndex;

for(int index = startIndex + 1; index < numberUsed; index++)
{
	if(a[index] < min)
	{
		min = a[index];
		indexOfMin = index;
	}
}
return indexOfMin;
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...