Программирования на языке С

Тема в разделе "Общие вопросы по С и С++", создана пользователем isakz, 22 окт 2010.

  1. isakz

    isakz Гость

    Требуется написать программу на языке Си или С++ . Программа должна переводить любое слово в двоичный код а затем обратно. Только начал изучать язык С, поэтому в этом деле ничего не смыслю. А программа нужна срочно. Хотел бы узнать с какой стороны начать. Заранее спасибо
     
  2. isakz

    isakz Гость

    в том то и дела написать лучше самому. Мне бы понять в каком направление двигаться.
     
  3. isakz

    isakz Гость

    таблица у меня имеется перевода букв в двоичный, что такое двоичный код я знаю. я так понимаю мне надо понять как переводятся буквы в дв. код. что то в инете я этого не нашел. может это забита изначально в комп, то есть перевод дв. кода в слова и наоборот. например буква "i" = 01101001.
     
  4. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Ну если говоришь что сам напишишь, то хорошо... Вот тебе принцип в помощь
    Код (C++):
    #include <iostream>

    using namespace std;
    union Sm //Обединение
    {
    char sim; //Символ 1байт = 8 (Бит)
    struct //Структура 1байт = 8 (Бит) размерности равны и соблюдены
    {
    bool a:1;
    bool b:1;
    bool c:1;
    bool d:1;
    bool e:1;
    bool f:1;
    bool g:1;
    bool h:1;
    } bit;
    } code;

    //Вывод на экран код символа
    //Помним что в Intelе пишится память с права-на-лево
    void PrintB(void)
    {
    cout<<code.bit.h<<code.bit.g<<code.bit.f<<code.bit.e<<code.bit.d<<code.bit.c<<code.bit.b<<code.bit.a;

    }

    void InputB(char str[8])
    {
    char buffer[2]; buffer[1]='\0';
    buffer[0] = str[7];
    code.bit.a = atoi(buffer);
    buffer[0] = str[6];
    code.bit.b = atoi(buffer);
    buffer[0] = str[5];
    code.bit.c = atoi(buffer);
    buffer[0] = str[4];
    code.bit.d = atoi(buffer);
    buffer[0] = str[3];
    code.bit.e = atoi(buffer);
    buffer[0] = str[2];
    code.bit.f = atoi(buffer);
    buffer[0] = str[1];
    code.bit.g = atoi(buffer);
    buffer[0] = str[0];
    code.bit.h = atoi(buffer);
    }

    void main(void)
    {
    code.sim = 'i';
    PrintB();
    cout<<endl;
    InputB("01101001");
    cout<<code.sim;
    cout<<endl;
    PrintB();
    }
     
  5. isakz

    isakz Гость

    ага. Спасибо.
     
  6. isakz

    isakz Гость

    Код (C++):
    // praci5.cpp: определяет точку входа для консольного приложения.
    //

    #include "stdafx.h"
    #include <stdio.h>
    #include <conio.h>

    int main()
    {
    printf( "Vvod stroki: " );
    char s[255];
    scanf( "%[^\n]s" , s );

    printf( "'%s' Preobrazovanie v binarny kod: " , s );
    int i,c,power;

    for( i=0; s[i]!='\0'; i++ )
    {
    c = s[i];
    for( power=7; power+1; power-- )
    if( c >= (1<<power) )
    {
    c -= (1<<power);
    printf("1");
    }

    else
    printf("0");
    } getch();

    char bin = s[i];
    int dec = 0;
    printf("\nResult = %c", dec);
    for(i = 0; bin != 0; ++i)

    {
    int j = bin % 10;
    bin /= 10;
    if(j)
    dec += j << i;

    }

    getch();
    }
    Вроде все правильно. Ошибки не вылазиют, но результат не тот, что надо. При вводе текста преобразуется в двоичный а обратно в текст нет.
     
  7. Chicago002

    Chicago002 Гость

    Требуется написать программу, которая считает

    30
    ∑ (a[sub]i[/sub]-b[sub]i[/sub])[sup]2[/sup]
    i=1

    где
    a[sub]i[/sub]= i, если i нечетное
    и a[sub]i[/sub]= i/2, в противном случае​
    b[sub]i[/sub]= i[sup]2[/sup], если i нечетное
    и b[sub]i[/sub]= i[sup]3[/sup], в противном случае​
     
Загрузка...

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