Problem z tablica oraz kodem ascii

0

Witam wszystkich,na wstępie chce dodać ,że jestem młodym "programista" i mam wielki problem na jutro mam napisac program z menu wyboru oraz kodem ascii , ktory bedzie nam zamieniał małe literki na duże a duże na małe oraz mieszane gdy wpiszemy małe a wyświetli nam duże A . O to mój kodzik jeszcze nie skonczony. Mam problem z CHAR 1 i nie idzie nic dalej. Prosze o szybką odpowiedz lub uzupełnienie gdyby ktoś miał chwile.Z góry dziękuje

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

using namespace std;

int main(int argc, char *argv[])
{
	int x = 0; 
    while(x>5 || x<1)
    {
	cout<<"Menu"<<endl;
	cout<<"1 Male litery"<<endl;
	cout<<"2 Duze litery"<<endl;
	cin>>x;
	system("cls");
}
switch (x)
{
	case 1:
	string wyraz,wyraz2;
	cout<<"podaj wyraz"<<endl;
	cin>>wyraz;
	int a,dl;
	char 1;  <-----Tu jest moj problem.
	dl=wyraz.lenght ();
    for (int c=0; c<=dl;c++)
    l=wyraz [c];
    a=(int) l;
    wyraz 2 [c]=(char) a-32 ;}
    for (int c=0; c<=dl-1;c++){
		cout<<wyraz2 [c];
		break;
		case 2:
	string wyraz,wyraz2;
	cout<<"podaj wyraz"<<endl;
	cin>>wyraz;
	int a,dl;
	char 1;
	dl=wyraz.lenght ();
    for (int c=0; c<=dl;c++)
    l=wyraz [c];
    a=(int) l;
    wyraz 2 [c]=(char) a-32 ;}
    for (int c=0; c<=dl-1;c++){
		cout<<wyraz2 [c];
		break;
    }
	
	system("pause");
	return 0;
}
0

@michalo2882 Jak masz coś ważnego odnośnie postu np. odpowiedź, to właśnie odpowiedz, a nie komentujesz.

Tak jak michalo wspomniał nazwy zmiennych nie mogą zaczynać/być cyfrą. Poza tym nie lenght() a length().

I weź no porządnie sformatuj kod.

0

Mniej wiecej sobie poradziłem z 1 menu nie wykrywa mi nic ,ale gdy robie case 2: pojawia sie juz problem o to jest poprawiony kodzik,poza tym nie wiem jak sprawdzic czy działa . Staram się skompilowac i tez nic wydaje mi się że z klamerkami jest problem

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

using namespace std;

int main(int argc, char *argv[])
{
	int x = 0; 
    while(x>5 || x<1)
    {
	cout<<"Menu"<<endl;
	cout<<"1 Male litery"<<endl;
	cout<<"2 Duze litery"<<endl;
	cin>>x;
	system("cls");
}
switch (x)
{
	case 1:
		char l;
		int a,dl;
	string wyraz,wyraz2;
	cout<<"podaj wyraz"<<endl;
	cin>>wyraz;
	dl=wyraz.length();
    for (int c=0; c<=dl;c++){
    l=wyraz [c];
    a=(int) l;
    wyraz2 [c]=(char) a-32;}
    for (int c=0; c<=dl-1;c++){
		cout<<wyraz2 [c];
		break;
		 }
	
	system("PAUSE");
}
0

Mówiłem sformatuj kod, będzie ci wygodniej czytać i od razu będziesz widział co jest nie tak. Brakuje zamykającej klamry funkcji main() - czyli dodaj na końcu }.

W ogóle to ten program nie działa, w sensie, że nie robi chyba tego co powinien. Chcesz zamienić na małe/duże litery podany tekst? Jeżeli tak i nie robisz jakiegoś zadania, które wymusza pewne metody pisania, a tylko dla siebie to:

#include <cstdlib>
#include <iostream>
#include <string.h>

using namespace std;

int main(int argc, char *argv[])
{
    int x = 0;
    string wyraz;
    while(x > 5 || x < 1)
    {
        cout << "Menu:" << endl;
        cout << "1. Male litery" << endl;
        cout << "2. Duze litery" << endl;
        cin >> x;
        system("cls");
    }
    switch (x)
    {
    case 1:
        cout << "Podaj wyraz" << endl;
        cin >> wyraz;
        for (int c = 0; c < wyraz.length(); c++)
        {
            wyraz[c] = (char)(wyraz[c] + 32);
        }
        cout << wyraz << endl;
        break;
    case 2:
        cout << "Podaj wyraz" << endl;
        cin >> wyraz;
        for (int c = 0; c < wyraz.length(); c++)
        {
            wyraz[c] = (char)(wyraz[c] - 32);
        }
        cout << wyraz << endl;
        break;
    default:
        break;

        system("PAUSE");
    }
}
0

No tylko ze ten program miał to robic przez kod ascii.Czyli mialem sobie pisac ala w kodzie ascii mialo to przetwarzac na ALA . tak jakos. Wybacz ze musisz ze mna sie tyle "uszarpac" ale mam programowanie w c++ 1 rok .

0

No to ci poprawiłem. Cały czas używasz kodu ASCII, mój kod również. Po prostu chcąc zamienić z dużych na małe dodajesz do aktualnego znaku np. w string'u, 32. A na odwrót odejmujesz 32. W twoim kodzie było kilka niepotrzebnych dod. zmiennych. Można to jeszcze prościej i krócej napisać, ale skoro masz podstawy, to nie ma na razie co kombinować.

0

Dziekuje Ci bardzo za pomoc. Chciałbym zapytac jeszcze o dwie rzeczy . Po pierwsze czy mógłbys jeszcze (jesli masz czas oczywiście) Dodac mi linijke z "AlA Ma KoTa" cos takiego ? gdy dam male a ma wyświetlic A a gdy dam B ma wyświetlic b , i tak w jednym zdaniu i drugie pytanie gdy skompiluje i uruchomie, po wpisaniu Ala program się wylancza .

0

W takim razie jeżeli chcesz wczytywać cały tekst wpisany w konsoli to musisz zamienić cin >> na getline(...). Tu jest kod z tym co chciałeś:

    case 1:
        cout << "Podaj wyraz" << endl;
        cin.ignore();
        getline(cin, wyraz);
        for (int c = 0; c < wyraz.length(); c++)
        {
            if ((int)wyraz[c] >= 65 && (int)wyraz[c] <= 90)
                wyraz[c] = (char)(wyraz[c] + 32);
        }
        cout << wyraz << endl;
        break;
    case 2:
        cout << "Podaj wyraz" << endl;
        cin.ignore();
        getline(cin, wyraz);
        for (int c = 0; c < wyraz.length(); c++)
        {
            if ((int)wyraz[c] >= 97 && (int)wyraz[c] <= 122)
                wyraz[c] = (char)(wyraz[c] - 32);
        }
        cout << wyraz << endl;
        break;
0
#include <iostream>

int main()
{
	int w;
	std::string s;
	
	std::cout << "1. Duze\n2. Male\n3. Mieszane\n";
	std::cin >> w;
	
	std::cout << "Podaj wyraz: ";
	std::cin >> s;
	
	switch(w)
	{
		case 1:
			for(unsigned int i = 0; i < s.length(); i++)
				std::cout << (char)(s[i] - 32);
				
			break;
			
		case 2:
			for(unsigned int i = 0; i < s.length(); i++)
				std::cout << (char)(s[i] + 32);
				
			break;
				
		case 3:
			for(unsigned int i = 0; i < s.length(); i++)
				if((int)s[i] > 96 && (int)s[i] < 123)
					std::cout<<(char)(s[i] - 32);
				else
					std::cout<<(char)(s[i] + 32);
					
			break;
			
		default:
			std::cout<<"Zly wybor";
			
			break;
	}
	
	return 0;
}

0

Ok dodalem sobie case 3: i wkleilem ladnie. Dziekuje Ci za pomoc. Ale jeszcze powiesz dla czego jak wpisze juz np: ala i wciskam enter zamyka mi konsolke ?

0

Nie możliwe by się tak działo. Przy wpisaniu danego tekstu tak? U mnie jest ok.

0

No właśnie u mnie znika konsolka. Być może to dla tego ze mam Windows 7 64 bit?

U mnie znika.być moze dla tego ze mam windows 7 64 bir??

0

Dziekuje bardzo za pomoc ! Wesołych świąt!

0

Też mam Win7x64, to raczej nie ma znaczenia.

0

przed return 0 dodaj jeszcze getch(); (program ci się zamyka dlatego, że po wyjściu z pętli switch() program napotka return 0;, co powoduje wyjście z funkcji main() i tym samym zamknięcie programu. Dodanie getch(); zatrzyma program do naciśnięcia dowolnego przycisku. Pamietaj tylko o dodaniu biblioteki <conio.h> )

1 użytkowników online, w tym zalogowanych: 0, gości: 1