Поиск:

Ответ в темуСоздание новой темы Создание опроса
> возвратить значение, типа char 
V
    Опции темы
susanin
Дата 20.3.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



UniBomb, это следующее выдало целую кучу ошибок......
PM MAIL   Вверх
Fazil6
Дата 20.3.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(susanin @  20.3.2007,  18:50 Найти цитируемый пост)
где же у меня все таки ошибка?

ты сделай как я написал.
разве у меня так?
Код

char sum(char bin1[], char bin2[], *rez)

надо
Код

void sum(char bin1[], char bin2[], char *rez)


это
Код

char x1[]={'1','0','0','1'};
char x2[]={'0','1','1','0'};

rez = sum(x1,x2,rez);

надо
Код

char x1[]="1001";
char x2[]="0110";

sum(x1,x2,rez);

и еще куча галиматьи в sum. Такое впечатление, что ты понятия не имеешь о элементарных правилах С++.
я же написал тебе функцию, я правда не вдавался там в подробности алгоритма, но у тебя в этой функции ошибок тьма.
Код

void sum(char bin1[], char bin2[], char rez[])
{
   char mem= '0';
   
    int len_bin1=strlen(bin1);
    int len_bin2=strlen(bin2);

    // по моему алгоритм твой дальше неправильный.
    // непонятно куда денется 1 если в старших битах слагаемых 1
    for (int i = len_bin1; i >= 0 ; i--)
    for (int j = len_bin2; j >= 0; j--)
    {
       if (bin1[i] == '0' && bin2[i] == '0' && mem == '0')
            rez[i]= '0', mem = '0';
       else
       if (bin1[i] == '0' && bin2[i] == '1'&& mem == '0')
            rez[i] = '1', mem = '0';
       else
       if (bin1[i] == '1' && bin2[i] == '0'&& mem == '0')
            rez[i] = '1', mem = '0';
       else
       if (bin1[i] == '1' && bin2[i] == '1' && mem == '0')
            rez[i] = '0', mem = '1';
       else
       if (bin1[i] == '0' && bin2[i] == '0' && mem == '1')
            rez[i] = '1', mem = '0';
       else
       if (bin1[i]== '0' && bin2[i] == '1' && mem == '1')
           rez[i] = '0', mem = '1';
       else
       if (bin1[i] == '1' && bin2[i] == '0' && mem == '1')
           rez[i] = '0', mem = '1';
       else
       if (bin1[i] == '1' && bin2[i] == '1' && mem == '1')
          rez[i] = '1', mem = '1';
    }
     // тут надо как-то поставить ограничитель в rez
}



UniBomb, что ты там подправил? ошибок куча, причем уровня "C++ за 21 день"

Это сообщение отредактировал(а) Fazil6 - 20.3.2007, 20:20
PM MAIL   Вверх
susanin
Дата 20.3.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



Fazil6 , просто я еще переполнение не отслеживал в этом алгоритме, а так он праильный...вроде.....
Цитата(Fazil6 @  20.3.2007,  20:20 Найти цитируемый пост)
void sum(char bin1[], char bin2[], char *rez)
 
на это выдается ошибка неизвестный размер sum..

PM MAIL   Вверх
Fazil6
Дата 20.3.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(susanin @  20.3.2007,  19:27 Найти цитируемый пост)
на это выдается ошибка неизвестный размер sum..

покажи весь код свой и что в ошибках пишет. Нету ошибки в этой строке.
PM MAIL   Вверх
susanin
Дата 20.3.2007, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



Fazil6 , там я нашел ошибку ...тема закрыта
PM MAIL   Вверх
Fazil6
Дата 20.3.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



вот так с двоичными работать
Код

#include<math.h>
#include<iostream>
#include <string>
#include <algorithm>

namespace BIN_OPERATIONS
{

int binToint(const std::string &s1)
{// перевод строки в 10-е число
    int z1 = 0;
    for(int i = (int)s1.length() - 1; i > -1  ; --i)
    {
        if((s1[i] != 0x30) && (s1[i] != 0x31)) 
            throw std::runtime_error("not bin symbol") ;

        if((s1[i] - 0x30))
            z1 = z1 + (int)pow(2, int(s1.length() - 1 - i)   );
    }
    return z1;
}

std::string intToBin(int value)
{// перевод в двоичное

    std::string bufer; 
    if(!value) { bufer.push_back('0'); return bufer; }

    while(value)
    {
        bufer.push_back(char(value % 2 + 0x30));
        value /= 2;
    }

    std::reverse(bufer.begin(), bufer.end());
    return bufer;
}

std::string bin_sum(const std::string &s1,  const std::string &s2)
{
    return intToBin(binToint(s1) + binToint(s2));
}

std::string bin_minus(const std::string &s1,  const std::string &s2)
{
    return intToBin(binToint(s1) - binToint(s2) );
}
std::string bin_mult(const std::string &s1,  const std::string &s2)
{
    return intToBin(binToint(s1) * binToint(s2));
}

std::string bin_div(const std::string &s1,  const std::string &s2)
{
    int z = binToint(s2); 
    if(!z) throw std::runtime_error("divide by zero") ;
    return intToBin(binToint(s1) / z );
}

};  // END namespace

int main()
{
    std::string s1("101");
    std::string s2("011");
    

    try
    {
        std::cout << BIN_OPERATIONS::bin_sum(s1, s2) << std::endl;
        
        std::cout << BIN_OPERATIONS::bin_minus(s1, s2) << std::endl;
        
        std::cout << BIN_OPERATIONS::bin_mult(s1, s2) << std::endl;
        
        std::cout << BIN_OPERATIONS::bin_div(s1, s2) << std::endl;

    }
    catch(const std::runtime_error &e)
    {
        std::cout << e.what();
    }
    return 0;
}



Это сообщение отредактировал(а) Fazil6 - 20.3.2007, 21:49
PM MAIL   Вверх
susanin
Дата 20.3.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



Fazil6 , для меня это пока что выглядит как что то ужасное....непонятное и страшное!! smile 
PM MAIL   Вверх
Fazil6
Дата 20.3.2007, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(susanin @  20.3.2007,  21:59 Найти цитируемый пост)
Fazil6 , для меня это пока что выглядит как что то ужасное....непонятное и страшное!! 

чего тут страшного? Билдер схавает на ура. Главное, чтобы ему страшно небыло...
PM MAIL   Вверх
UniBomb
Дата 20.3.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 97



Цитата

UniBomb, что ты там подправил? ошибок куча, причем уровня "C++ за 21 день"


Ну да, действительно)) Короче, что я хотел сказать - надо использовать переменную-"ссылку". Вот так:

Код

void sum(char bin1[], char bin2[], char &rez[]);


PM MAIL ICQ Skype   Вверх
Fazil6
Дата 20.3.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата

Fazil6 , для меня это пока что выглядит как что то ужасное....непонятное и страшное!!


этот код намного проще твоего и в нем отсутствует масса проблем, которые приходится решать в твоем. 

Это сообщение отредактировал(а) Fazil6 - 20.3.2007, 23:56
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0875 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.