Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VB в C, нужна помощь 
:(
    Опции темы
danata
Дата 20.11.2008, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!!!
У меня сложилать такая проблема что мне надо реализовать шифрование алгоритмом магический квадрат на C.Проблема в том что я плохо знаю С а вот реализовать на С надо оч быстро.
У меня есть код написанный на VB6.0, не мог бы кто нибуть помощь в переводе текста из VB в С?
Спасибо всем за внимание!!!!
Код

Private Sub cmdCodeMagSq_Click()
    'Описание переменных
    Dim intMagSqInNum() As Integer 'Магический квадрат в числах
    Dim strTextInMagSq() As String 'Текст в магическом квадрате
    Dim strTextInArray() As String 'Одномерный массив шифруемого текста
    Dim intSizeOfArray As Integer 'Размер массива
    Dim i%, j% 'Integer(%)
    Dim strTextWBlanks As String 'Текст без пробелов
    Dim lngMarksInText As Long 'Чило знаков в тексте
    'Убираем пробелы в тексте
    'и преобразуем строчные буквы в прописные
    strTextWBlanks = StrConv(Replace(txtEntrance.Text, " ", ""), vbUpperCase)
    'Вычисляем колличество знаков в тексте
    lngMarksInText = Len(strTextWBlanks)
    'Вычисляем размер магического квадрата (массива)
    intSizeOfArray = Int(Sqr(lngMarksInText))
    If intSizeOfArray Mod 2 = 0 Then intSizeOfArray = intSizeOfArray + 1
    If intSizeOfArray ^ 2 < lngMarksInText Then intSizeOfArray = intSizeOfArray + 2
    'Разбиваем текс в одномерный массив
    'и в пустые значения присваеваем "*"
    ReDim strTextInArray(intSizeOfArray ^ 2)
    For i = 1 To intSizeOfArray ^ 2
        If i > CInt(lngMarksInText) Then
            strTextInArray(i) = "*"
        Else
            strTextInArray(i) = Mid(strTextWBlanks, i, 1)
        End If
    Next i
    'Создаем магический квадрат с помощью функции MagSqInNum
    intMagSqInNum = MagSqInNum(intSizeOfArray)
    'Выводим магический квадрат
    txtMagSqInNum.Text = ""
    For i = 1 To intSizeOfArray
        For j = 1 To intSizeOfArray
            txtMagSqInNum.Text = txtMagSqInNum.Text & intMagSqInNum(i, j) & " "
        Next j
        txtMagSqInNum.Text = txtMagSqInNum.Text & vbCrLf
    Next i
    'Распределяем текст в магический квадрат
    'и выводим текст в матрице
    ReDim strTextInMagSq(intSizeOfArray, intSizeOfArray)
    txtTextInMagSq.Text = ""
    For i = 1 To intSizeOfArray
        For j = 1 To intSizeOfArray
            strTextInMagSq(i, j) = strTextInArray(intMagSqInNum(i, j))
            txtTextInMagSq.Text = txtTextInMagSq.Text & strTextInMagSq(i, j) & " "
        Next j
        txtTextInMagSq.Text = txtTextInMagSq.Text & vbCrLf
    Next i
    'Выводим шифрованный текст
    txtCodeMagSq.Text = ""
    For i = 1 To intSizeOfArray
        For j = 1 To intSizeOfArray
            strTextInMagSq(i, j) = strTextInArray(intMagSqInNum(i, j))
            txtCodeMagSq.Text = txtCodeMagSq.Text & strTextInMagSq(i, j)
        Next j
    Next i
    'Выводим размер квадрата на кнопку
    cmdCodeMagSq.Caption = "Магический квадрат (" & intSizeOfArray & " x " & intSizeOfArray & ")"
End Sub

Function MagSqInNum(intSizeOfArray As Integer) As Integer()
'Функция для создания магического квадрата
'нечетного порядка NxN
    'Описание переменных
    Dim intMagSqInNum() As Integer 'Магический квадрат в числах
    Dim intAverArray As Integer 'Среднее значение массива
    Dim i%, j%, k% 'Integer(%)
    Dim intVariantSq As Integer 'Вариант магического квадрата
    'Определяем среднее значение массива
    intAverArray = Int(intSizeOfArray / 2) + 1
    'Переопределяем размер массива (квадрата)
    ReDim intMagSqInNum(intSizeOfArray, intSizeOfArray)
    'Выбираем вариант с помощью генератора случайных чисел
    Randomize
    intVariantSq = Int((8 - 1 + 1) * Rnd + 1)
    'Создаем магический квадрат соответственно варианту
    Select Case intVariantSq
        Case Is = 1
            '  8 1 6
            '  3 5 7
            '  4 9 2
            i = 1: j = intAverArray
            For k = 1 To intSizeOfArray ^ 2
                If i < 1 And j > intSizeOfArray Then
                    i = i + 2: j = j - 1
                ElseIf i < 1 Then
                    i = intSizeOfArray
                ElseIf j > intSizeOfArray Then
                    j = 1
                ElseIf intMagSqInNum(i, j) > 0 Then
                    i = i + 2: j = j - 1
                End If
                intMagSqInNum(i, j) = k
                i = i - 1: j = j + 1
            Next k
        Case Is = 2
            '  6 7 2
            '  1 5 9
            '  8 3 4
            i = 1: j = intAverArray
            For k = 1 To intSizeOfArray ^ 2
                If i < 1 And j < 1 Then
                    i = i + 2: j = j + 1
                ElseIf i < 1 Then
                    i = intSizeOfArray
                ElseIf j < 1 Then
                    j = intSizeOfArray
                ElseIf intMagSqInNum(j, i) > 0 Then
                    i = i + 2: j = j + 1
                End If
                intMagSqInNum(j, i) = k
                i = i - 1: j = j - 1
            Next k
        Case Is = 3
            '  2 9 4
            '  7 5 3
            '  6 1 8
            i = intSizeOfArray: j = intAverArray
            For k = 1 To intSizeOfArray ^ 2
                If i > intSizeOfArray And j < 1 Then
                    i = i - 2: j = j + 1
                ElseIf i > intSizeOfArray Then
                    i = 1
                ElseIf j < 1 Then
                    j = intSizeOfArray
                ElseIf intMagSqInNum(i, j) > 0 Then
                    i = i - 2: j = j + 1
                End If
                intMagSqInNum(i, j) = k
                i = i + 1: j = j - 1
            Next k
        Case Is = 4
            '  4 3 8
            '  9 5 1
            '  2 7 6
            i = intAverArray: j = intSizeOfArray
            For k = 1 To intSizeOfArray ^ 2
                If i > intSizeOfArray And j > intSizeOfArray Then
                    i = i - 1: j = j - 2
                ElseIf i > intSizeOfArray Then
                    i = 1
                ElseIf j > intSizeOfArray Then
                    j = 1
                ElseIf intMagSqInNum(i, j) > 0 Then
                    i = i - 1: j = j - 2
                End If
                intMagSqInNum(i, j) = k
                i = i + 1: j = j + 1
            Next k
        Case Is = 5
            '  6 1 8
            '  7 5 3
            '  2 9 4
            i = 1: j = intAverArray
            For k = 1 To intSizeOfArray ^ 2
                If i < 1 And j < 1 Then
                    i = i + 2: j = j + 1
                ElseIf i < 1 Then
                    i = intSizeOfArray
                ElseIf j < 1 Then
                    j = intSizeOfArray
                ElseIf intMagSqInNum(i, j) > 0 Then
                    i = i + 2: j = j + 1
                End If
                intMagSqInNum(i, j) = k
                i = i - 1: j = j - 1
            Next k
        Case Is = 6
            '  8 3 4
            '  1 5 9
            '  6 7 2
            i = 1: j = intAverArray
            For k = 1 To intSizeOfArray ^ 2
                If i < 1 And j > intSizeOfArray Then
                    i = i + 2: j = j - 1
                ElseIf i < 1 Then
                    i = intSizeOfArray
                ElseIf j > intSizeOfArray Then
                    j = 1
                ElseIf intMagSqInNum(j, i) > 0 Then
                    i = i + 2: j = j - 1
                End If
                intMagSqInNum(j, i) = k
                i = i - 1: j = j + 1
            Next k
        Case Is = 7
            '  4 9 2
            '  3 5 7
            '  8 1 6
            i = intAverArray: j = intSizeOfArray
            For k = 1 To intSizeOfArray ^ 2
                If i > intSizeOfArray And j > intSizeOfArray Then
                    i = i - 1: j = j - 2
                ElseIf i > intSizeOfArray Then
                    i = 1
                ElseIf j > intSizeOfArray Then
                    j = 1
                ElseIf intMagSqInNum(j, i) > 0 Then
                    i = i - 1: j = j - 2
                End If
                intMagSqInNum(j, i) = k
                i = i + 1: j = j + 1
            Next k
        Case Is = 8
            '  2 7 6
            '  9 5 1
            '  4 3 8
            i = intSizeOfArray: j = intAverArray
            For k = 1 To intSizeOfArray ^ 2
                If i > intSizeOfArray And j < 1 Then
                    i = i - 2: j = j + 1
                ElseIf i > intSizeOfArray Then
                    i = 1
                ElseIf j < 1 Then
                    j = intSizeOfArray
                ElseIf intMagSqInNum(j, i) > 0 Then
                    i = i - 2: j = j + 1
                End If
                intMagSqInNum(j, i) = k
                i = i + 1: j = j - 1
            Next k
    End Select
    MagSqInNum = intMagSqInNum
End Function

Да к стате в С графический интефейс мне не нужен)

Это сообщение отредактировал(а) danata - 20.11.2008, 22:50
PM MAIL   Вверх
jonie
Дата 20.11.2008, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



вам враздел "объявления о найме специалистов" надо, а не сюда. тут за вас никто ничего не пишет


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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