[C]skorzystanie z kodów ascii. Przekształcenie znaków

0

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źć.

0

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;

0

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ć?

0
#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;
}
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.

0

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.

0

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.

0
  1. 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.
  2. 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ć.
0

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ś...

0

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.

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