Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Zmiana liter z małych na duże


Rekomendowane odpowiedzi

Opublikowano

Witam!

Mam napisać program na informatykę. Program ma zmieniać litery małe na duże. Mam do tego użyć kody ASCII. Doszedłem do miejsca gdzie program zmienia mi pojedyncze słowa. Jednak gdy chcę wpisać już całe zdanie to program dochodzi do spacji i kończy swoje działanie. Jak mogę to naprawić?? Tutaj daje kod swojego programu:

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
   string napis;
   cin>>napis;
   int dl=napis.length();
   int k;
   k=32;
   int w;
   for (int i=0; i<dl; i++){
    w=(int)napis[i];
    if (w>96 && w<123){
	    w=w-k;
	    cout<<char(w);
		    }
   }
    return 0;
}

Pomogłem? Kliknij: www.pajacyk.pl

Opublikowano
#include <iostream>
#include <string> // nie wydaje mi się aby było coś takiego jak <cstring>
using namespace std;
int main()
{
string napis;
cin>>napis;
int i=0;
while(napis[i] != '\0')
 if (napis[i] <= 'z' && napis[i] >= 'a')
  napis[i++] -= 'a'-'A';
cout << napis;
return 0;
}

Opublikowano

#include <iostream>
#include <string> // nie wydaje mi się aby było coś takiego jak <cstring>
using namespace std;
int main()
{
string napis;
cin>>napis;
int i=0;
while(napis[i] != '\0')
if (napis[i] <= 'z' && napis[i] >= 'a')
napis[i++] -= 'a'-'A';
cout << napis;
return 0;
}

Dzięki ale twój program działa podobnie jak mój gdy wpiszesz spacje kończy działanie :(

Pomogłem? Kliknij: www.pajacyk.pl

Opublikowano

sorry śpię jeszcze dzisiaj. Problem leży w tym, że cin wczytuje do napotkania jakiegoś białego znaku. Jeśli chcesz wczytać całą linię to spróbuj użyć getline

http://www.cplusplus...stream/getline/

musisz sobie wtedy oczywiście stworzyć jakiś bufor na wczytane znaki

Opublikowano

#include <iostream>

#include <string> //

using namespace std;

int main()

{

string napis; " wpisz tu cos "

cin>>napis;

int i=0;

while(napis != '\0')

if (napis <= 'z' && 'a' >= 'a')

napis[i++] -= 'a'-'A';

cout << znow wpisz "

return 1;

}

Opublikowano

#include <iostream>
#include <string> // nie wydaje mi się aby było coś takiego jak <cstring>
using namespace std;
int main()
{
string napis;
cin>>napis;
int i=0;
while(napis[i] != '\0')
if (napis[i] <= 'z' && napis[i] >= 'a')
napis[i++] -= 'a'-'A';
cout << napis;
return 0;
}

 

No i masz, ujebały cię wreszcie w tyłek te twoje uproszczenia! Sprawdź ze stringiem "1abc".

 

@EDIT

Pomijając już, że jest coś takiego jak cstring [string.h] (memcpy, strtok, strstr, strlen, etc.)

Ta sygnatura jest pusta.

Opublikowano

#include <iostream>
#include <string>
using namespace std;
int main()
{
string napis;
getline(cin,napis);
int i=0;
while(napis[i] != '\0')
{
if ((napis[i] <= 'z') && (napis[i] >= 'a'))napis[i] -= 'a'-'A';
i++;
}
cout << napis;
return 0;
}

 

Problem tkwił w tym, że i inkrementowało się tylko wtedy, gdy wartość była od a do z, czyli bez białych znaków.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano
No i masz, ujebały cię wreszcie w tyłek te twoje uproszczenia! Sprawdź ze stringiem "1abc".

racja, już nie pierwszy raz. Muszę sprawdzać te kody zanim cokolwiek wrzucę ;d

 

Pomijając już, że jest coś takiego jak cstring [string.h] (memcpy, strtok, strstr, strlen, etc.)

okej, nie wiedziałem. Dzięki.

 

 

 

hihihihihi. musiałem poprawić

 

 

#include <iostream>
#include <string>
int main()
{
std::string napis;
std::cin>>napis;
int i=-1;
while(napis[++i] != '\0')
napis[i] -= ('a'-'A') * (napis[i] <= 'z' && napis[i] >= 'a');
std::cout << napis;
return 0;
}

 

 

  • 1 miesiąc temu...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...