Mam napisać program, który ma zamieniać litery od 'a' do 'z' ,w przekazanym jej łańcuchu, na litery od 'A' do 'Z'. Mam skorzystać z tego, że litery od 'a' do 'z'(oraz od 'A' do 'Z') mają kolejne kody ASCII. Czy to można zrobić dwoma tablicami? pierwsza {a,b,c....} druga {A,B,C....} i że pierwsza[i]=druga[i]? Jak mogę skorzystać z tych kodów ASCII? zamiast konkretnych znaków a,b,c wpisać w tablice ich odpowiedniki z kodu? Czyli 97,98,99...? Tylko jak zmusić program, żeby wyczytał to jako znak 'a'. Szukałem coś na ten temat ale nic nie mogłem znaleźć.
do kodu ascii jak pamiętam dodajesz 32 i masz :) wczytuje do tablicy jako chary i masz z glowy :)
np.
char znak;
cin >> znak;
znak+=32;//tu nie jestem pewien czy tak można :PP ale czyba tak :)
cout << znak;
Ok dzięki:) Zrobiłem taki kod:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i=0;
char ML[26]={65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90}; //male literki
char c;
while(ML[i]){
c=ML[i]+32;
i++;
}
printf("Podaj lancuch:");
scanf("%d",ML[i]);
printf("%d",c);
system("PAUSE");
return 0;
}
Niestety coś w nim jest na pewno bez sensu. Z tym toupper nie wiem jak zrobić, żeby można było wpisać w programie łańcuch, który zostanie zamieniony. W przykładzie jest podany w kodzie pewien wyraz który po włączeniu programu zmienia swoje znaki. Jak mogę zrobić, żeby to użytkownik decydował jaki łańcuch chcę wpisać?
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char* s;
char buf[128];
fgets(buf, 128, stdin);
s = buf;
while(*s != 0)
*s = toupper(*s);
fputs(buf, stdout);
return 0;
}
Fanael napisał(a)
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char* s;
char buf[128];
fgets(buf, 128, stdin);
s = buf;
while(*s != 0)
*s = toupper(*s);
fputs(buf, stdout);
return 0;
}
Dzięki tylko niestety nic z tego nie rozumiem.:) No i coś mi nie działa. Gdybyś mógł mniej więcej wytłumaczyć byłbym bardzo wdzięczny:). Zrobiłem coś takiego:
#include<stdio.h>
#include<stdlib.h>
int litery(char ML[], char c)
{
int i;
ML[26]={65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90}; //male literki
while(ML[i]){
c=ML[i]+32;
i++;
}
int main()
{
char ML[26];
char c;
printf("Podaj lancuch:");
gets(ML);
printf("Wynik:\n",litery(ML,c));
system("PAUSE");
return 0;
}
tylko nie wiem czemu kompilator wskazuje błąd: 7 syntax error before '{' token . W 7 linijce wskazuje ten błąd.
To co napisałeś jest zupełnie bez sensu. Do tego twoim zdaniem "małe literki" są tak naprawdę w ASCII dużymi literami. Domyślam się, że chcesz sam przekształcić łańcuch na łańcuch z dużymi literami.
#include<stdio.h>
#include<stdlib.h>
void duze_litery(char * s)
{
int i=0;
while(s[i]){ // Rób dopóki s[i] nie jest NUL
if(s[i] >= 97 && s[i] <= 122){ // Litera jest mała
s[i]-=32; // Powiększamy
}
i++;
}
}
int main()
{
char * str=malloc(sizeof(char)*128);
printf("Podaj lancuch: ");
gets(str);
duze_litery(str);
printf("Wynik: %s\n", str);
system("PAUSE");
free(str);
return 0;
}
Na przyszłość: http://www.asciitable.com/ i zrób jakiś kurs języka C bo widzę, że słabo z programowaniem.
Na przyszłość poczytaj o tym, czym są magic numbers i czemu za nie powinni wieszać, a potem jeszcze poczytaj o wynajdowaniu koła na nowo, bo do konwersji na duże litery jest toupper z biblioteki standardowej.
- To miał być prosty program przedstawiający przekształcanie małych liter na duże - z tego co przeczytałem dazz007 zapewne nie rozumiał działania toupper(). Jeżeli nie to bardzo mi przykro że uraziłem Twoje programistyczne ambicje. Wierz mi czy nie ale w moich projektach nie popełniam takich błędów - więc nie snuj teorii nic o mnie nie wiedząc.
- Tak jak wcześniej, uważałem że dazz007 nie rozumiał działania toupper(). Nawet jeżeli nie, to lepiej dla niego gdy zobaczy jak ta funkcja może wyglądać.
Wiesz, lepiej jest nie dawać żadnego przykładu niż dać zły przykład. Potem się nauczy robić takie rzeczy i ktoś będzie to musiał potem poprawiać.
Hm. A magic numbers to nie wyjaśniłeś...
Słuchaj, nie mam zamiaru pisać tu teorii które na jego poziomie programowania zupełnie nic mu nie dadzą. Jeżeli dalej masz zamiar kontynuuować tą rozmowę to skieruj ją na PM.