Коды Ascii

Тема в разделе "Общие вопросы по С и С++", создана пользователем -=Fynjy=-, 21 фев 2007.

Статус темы:
Закрыта.
  1. -=Fynjy=-

    -=Fynjy=- Гость

    Подскажите, пожадуйста, какая функция отвечает за преобразование символа в код ASCII на с++....
    Нашел функцию преобразовывающую код в символ... (toascii()) ...а вот символ в код все никак не могу найти....вообще есть ли такая :) ...
    На паскале искал - быстро все нашел.... ord chr ....а для с++ чето никак не находится....


    Заранее спасибо :)
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Из MSDN:

    Я надеюсь, что это все прояснит
     
  3. -=Fynjy=-

    -=Fynjy=- Гость

    Я в программировании новичек еще совсем :) .... Не прояснило )
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Char - это целочисленный тип. Там где нужно использовать код символа можно передавать сам символ
     
  5. -=Fynjy=-

    -=Fynjy=- Гость

    Такс....у меня проблема немного в другом мне нужно заменить каждый символ из данной строки на последующий по алфавиту...
    Кроме как сделать это по таблице на ум ничего не пришло (
     
  6. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    И где тут проблема?
     
  7. -=Fynjy=-

    -=Fynjy=- Гость

    Пытался решить задачу так:
    Через цикл
    i=0;
    for(z='a';z<='z';z++,i++) (заменял каждый str=z+1)...но чтоб обращаться к итому символу строки нужно задать переменную как char z[80] (а не просто char z)....а когда я задаю переменную как char z[80], то у меня символы вводимые после пробела не выводятся...

    Если же задать переменную как просто char z, то нельзя обратиться к итому символу.... а как же тогда заменять каждый символ на последующий по алфавиту?
     
  8. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Перед заменой надо проверять вхождение символа во множество букв, которое подлежит замене
     
  9. -=Fynjy=-

    -=Fynjy=- Гость

    void main()
    {
    int i;
    char z[80];
    i=0;
    //for (z=' ';z;z++) // цикл работает только тогда когда не пишу сколько символов будет в строке...
    //{
    scanf("%c",&z);
    printf("%c",z);
    //}
    /*for (z='A';z<='Z';z++) // цикл работает только тогда когда не пишу сколько символов будет в строке...
    {
    scanf("%c",&z);
    printf("%c",z);
    } */
    getch();
    }

    Указывая количество символов в строке, не могу считать даже саму строку...не говоря уже о замене каждом символе на последующий по алфавиту...
     
  10. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Как всегда скатились к проблеме ввода с консоли :) Ну неужели так тяжело посмотреть соседние ветки?
     
  11. -=Fynjy=-

    -=Fynjy=- Гость

    ну я же говорю что я новичек еще в етом деле )
     
  12. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Ну если новичек, то наверное стоит сказать, что на форумах, за некоторым исключением, помогают решить проблему, а не пишут готовую программу
     
  13. -=Fynjy=-

    -=Fynjy=- Гость

    Я и не пытаюсь вытянуть готовую программу...
    Объясните хотябы на словах как осуществить ввод строки если задать кол-во символов в ней...
     
  14. -=Fynjy=-

    -=Fynjy=- Гость

    Такс.... Задача была такова:"Дана строка символов. Зашифровать данную строку, заменив в ней каждую букву следующей по алфавиту, и удалив знаки препинания."

    #include<string.h>
    #include <stdio.h>
    #include <math.h>
    #include <conio.h>
    #include <ctype.h>

    void main()
    {
    int z;
    char i[80];
    gets(i); //ввод строки
    for (z=0;z<strlen(i);z++)
    {
    scanf("%d",&i[z]); // считываю каждый символ строки
    if ((i[z]==46) || (i[z]==58) ||(i[z]==59) || (i[z]==44) ||(i[z]==45)) i[z]=32; //замена знаков препинания на пробел
    if (i[z]==90) i[z]=toascii(65); //если символ 'Z' то заменяю его на А
    if (i[z]==122) i[z]=toascii(97); //если символ 'z' то на а
    if (((i[z]>65) && (i[z]<90)) || ((i[z]>97) && (i[z]<122))) i[z]=toascii(z+1); //проверяю интервалы и заменяю символ на последующий по алфавиту
    }
    printf("%s",i); //вывожу полученную строку
    getch();
    }

    Найдите ошибку plssssss


    Ничего не пойму...вроде правильно все написано :)
     
  15. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    scanf, toascii - не нужны вообще.
    i[z]=toascii(z+1) д.б. i[z] = i[z]+1;
     
  16. -=Fynjy=-

    -=Fynjy=- Гость

    Cпасибо...переправил..все заработало :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей