Skocz do zawartości

Problem z programem C++, duża litera każdego wyrazu,


Idź do rozwiązania Problem ogarnięty przez Famas_94,

Recommended Posts

Witam, 

 

Potrzebuje Waszej pomocy, mianowicie musze napisać program, który po wprwadzeniu przez użytkownika ciągu wyrazów(mogą być zdania itp.) zwiększy każda pierwszą literę wyrazu, jeżeli jest ona mała mała czyli np.

użytkownik wpisuje : Ala ma kota.

Program: Ala Ma Kota. 

 

Użyłem do tego tablicy znaków, gdzie jest wpisywany tekst użytkownika.

 

Zamieszczam mój program:

 

#include <iostream>
#include <conio.h>
#include "podpunkt 5.h"
#include <math.h>
using namespace std;
void wersalka (char*T)
{
    cout << "Podaj zdanie:";
    cin.getline( T, 100 );
int roznica='a'-'A';
int n=strlen(T); 
char z;
for (int i=0;i<n;i++)
{
        if(T!=' ')
             {
             i++;
             T-=roznica;
             cout<<T;
             i--;
             }
                 else
                 {
                 cout<<T;
                 }
                 }
              getchar();
}
int main ()
{
char T[100];
wersalka (T);
}
 
 
Z góry dziękuje za pomoc ;  )
Link to post
Share on other sites

Dzięki kolego, wiem wiem skorzystałem z tej tabelii kodu ASCII wyżej, program, który podałeś wykracza narazie poza mój (naszą uczelnianą) wiedze, chcicałbym to zrobić z wykorzystaniem funkcji, pętli, instrukcji warunkowej i tablic jak ten program, który podałem jednak nie wiem gdzie tam tkwi błąd, próbowałem już chyba wszsytkoego jednak dalej nie działa tak jak powinien ;/

Link to post
Share on other sites

Przyszło mi do głowy coś takiego:

 


#include
#include
#include

#include

using namespace std;

int main()
{
char tab[100];

cin.getline(tab,100);



for(int i = 1; i <100;i++ )
{





if(tab == ' ')
tab[i+1] = tab[i+1] - 32;
else continue;



}


tab[0] = tab[0] - 32;

cout <



};

 

 

 

 

 

Może dasz rade sobie to poprawić bo niestety ja nie mam na to pomysłu.

 

@edit

 

Teraz dopiero widzę że mój program nie wiele różni się od twojego ale zostawię go może wpadniesz na jakiś pomysł patrząc na mój kod :)

Edytowane przez NevilDevil
  • Popieram 1
Link to post
Share on other sites

Wydaje się działać dobrze. Zostaje tylko zastanowić się co zrobić z pierwszą literą.

 

 

 

#include
#include

using namespace std;

int main()
{
char tab[100];
int a;

cin.getline(tab,100);



for(int i = 1; i <100;i++ )
{

a = tab[i+1];






if(tab == ' ')
{

if(a > 96 )
tab[i+1] = tab[i+1] - 32;



}

else continue;




}
tab[0] = tab[0] - 32;


cout <




}

;

  • Popieram 1
Link to post
Share on other sites

Nie wiem czy widziałeś, ale kopiujesz nie kompletne programy braki po include na końcu nie ma strumienia do cout, jeżeli mógłbyś skopiować kompletnie to byłbym wdzięczny, wtedy mógłbym przeanalizwoać ten program. 

Jeżeli chodzi o pierwszą litere też się na tym zastanwiałem, pomyślałem, że użytkownik musi podać zdanie, które jak wiadomo musi zaczynać się od dużej litery ; ) 

Link to post
Share on other sites

Nie wiem czemu ale spoiler ucina include i koncówkę cout. A co do twoje rozwiązania to chyba będzie najlepsze przynajmniej ja nie mam lepszego :)

 

#include <iostream>
 
 
using namespace std;
 
int main()
{
char tab[100];
int a;
 
cin.getline(tab,100);
 
 
 
for(int i = 1; i <100;i++ )
{
 
a = tab[i+1];
 
 
 
 
 
 
if(tab == ' ')
{
 
if(a > 96 )
tab[i+1] = tab[i+1] - 32;
 
 
 
}
 
else continue;
 
 
 
 
}
tab[0] = tab[0] - 32;
 
 
cout <<tab;
 
 
 
 
}
 
Edytowane przez NevilDevil
  • Popieram 1
Link to post
Share on other sites

Program jak najbardziej działa, bardzo Ci dziękuje za pomoc.

Jeżeli ktoś by potrzebował na przyszłość to z tą pierwszą literą poradziłem sobie instrukcją warunkową if, w przeciwnym wypadku tak jak w programie u kolegi wyżej jeżeli podamy dużą literę na początku wtedy program odejmie jeszcze ode tej wartości 32, czyli z tabeli ASCII mogą wyjść różne rzeczy.

Tutaj dodaje ten fragment kodu:

 

if ((tab[0]>=97)&&(tab[0]<=122)) /*jeżeli pierwsza wartość w tablicy mieści się w przedziale <97;122> czyli jest z                                                       zakresu <a;z> zmniejsz o 32*/
tab[0] = tab[0] - 32;
Edytowane przez Famas_94
Link to post
Share on other sites
  • 3 tygodnie później...
  • Rozwiązanie

Cześć ponownie, nie chce zakładać nowego teamtu bo mam szybkie pytanie, otóż problem polega na tym, że musze napisać funkcje główn, która wykorzystuje funkcje pomocniczą. Mianowicie w ogólnym skrycie funkcja sortuj, ma wykorzystać funkcje zamień elementy jeżeli będzie to konieczne. Teraz zastanwiam się czy można wogóle wpisać jedną funkcje w drugą ewentualnie jak się odnieść do funkcji pomocniczej w funkcji głównej ?

Link to post
Share on other sites

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...