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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод кода из Си в VB, Котовый код 
:(
    Опции темы
SIMarOK
Дата 22.12.2004, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Помогите пожалуйста перевести код из си в бэйсик. Весь алгоритм тодже, только нужно это представить в языке VB, вот код в си:
Код

# include <stdio.h>
# include <conio.h>
# define N 8
//--------------------start function zapolnenia massiva
void massivShnik(float *mas)
{
int i;
float g;
i=0;
printf("Vvedite massiv\n");
do
{
printf("mas[%d]=", i);
scanf("%f", &mas[i]);
i++;
}
while (i<N);
clrscr();
}
//---------------------end funstion
//---------------------start funstion naxojdenia srednego polojitelnix
float SredPol(float *mas)
{
float sum=0;
int kol=0;
float sr;
for ( int i=0;i<N;i++){
if (mas[i]>0) {sum+=mas[i];kol++;}
}
sr=sum/kol;
return sr;
}
//--------------------end funstion
//--------------------start funstion raspechatka rezultatov
void Print(float *mas, float g, float pp)
{
int i;
printf("Isxodniy massiv:\n");
for (i=0; i<N; i++)
{
printf("mas[%d]=%.02f ", i, mas[i]);
}
printf("\nZagadannoe chislo: %2.1f", g);
printf("\nSrednee dlia polojitelnix elementov: %.02f", pp);
}
//--------------------end funstion
//--------------------start funstion preobrazovanie maasiva
void Preob(float *mas, float g, float pp)
{
float masB=0;
float max=masB;
int ss=0;
int k=0;
printf("\nPoluchenniy massiv:\n");
if (pp>g){
for (int i=0;i<N;i++){
if (mas[i]>0) {masB=mas[i]-g; k++;}
else if (mas[i]!=0) {masB=mas[i]+g; k++;}
printf("masB[%d]=%.02f ", i, masB);
if (masB>max){
max=masB;
ss=k-1;
}
}
printf("\nNomer maksimuma: mas[%d]=%.02f", ss, max);
}
else
printf("\nSrednee menshe dannogo 4isla. STOP");

}
//--------------------end funstion
void main ()
{float g, pp, max;
float mas[N];
int i, ss;
massivShnik(mas);
printf("Vvedite 4islo\n g=", g);
scanf("%f", &g);
clrscr();
pp=SredPol(mas);
Print(mas, g, pp);
Preob(mas, g, pp);
getch();
}



это программа сделана по следующему условию:
В массиве, содержащем не более 21 числа, подсчитать среднее арифметическое для положительных элементов. Если среднее больше заданного числа, положительные элементы исходного массива уменьшить на это число, а отрицательные - увеличить. Найти максимальный элемент полученного массива и его номер. Формат числа ±цц.ц.


Спасибо.
PM MAIL   Вверх
Akina
Дата 22.12.2004, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Изготовление зачетных задач и решение контрольных - это в разделе "Работа".


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SIMarOK
Дата 22.12.2004, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Akina @ 22.12.2004, 20:05)
Изготовление зачетных задач и решение контрольных - это в разделе "Работа".

к разделу "Работа" это никоем образом отношения не имеет. Я лишь прошу помочь...тех кто может...
PM MAIL   Вверх
cardinal
Дата 22.12.2004, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



SIMarOK, бери да переводи построчно. Что будет непонятно подскажем.

То что там на Си это консольное приложение. Ты же не консольное хочешь, а только алгоритмы? Если так, то всякие printf, getch и т.д. у тебя превратятся во что-нибудь типа msgbox и inputbox (см. MSDN).

Ну и остались одни функции, переменные и циклы всякие. Пробуй сам. smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
SIMarOK
Дата 22.12.2004, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вот. посмотрите пожалуйста, что-то сделал...но не работает...наверно куча ошибок:
Код

Function a() As Single
Public a(i) As Single
Label2.Visible = True
Label2.Caption = "Èñõîäíûé ìàññèâ:"
For i% = 0 To 21
a(i%) = Val(InputBox("a(i%)=", "a(i%)"))
Label2.Caption = "Èñõîäíûé ìàññèâ:"
Label2.Caption = Str(a(i%))
Next i%
End Function

Function sr(y As Single) As Single
Public a(i) As Single
Sum = 0
kol = 0
For i% = 0 To 21 Step 1
If a(i%) > 0 Then
Sum = Sum + a(i%)
kol = kol + 1
Next i%
sr = Sum / kol
End Function

Private Sub Preob(a As Single, g As Single, pp As Single)
Public a(i) As Single
newmas = 0
Max = newmas
ss = 0
k = 0
Label1.Visible = True
Label1.Caption = "Poluchenniy massiv:"
If pp > g Then
For i% = 0 To 21 Step 1
If a(i%) > 0 Then
newmas = a(i%) - g
k = k + 1
ElseIf a(i%) <> 0 Then
newmas = a(i%) + g
k = k + 1
Label1.Caption = "newmas="
Label1.Caption = Str(newmas)
If newmas > Max Then
Max = newmas
ss = k - 1
Next i%
Label1.Caption = "Nomer Maksimuma"
Label1.Caption = Str(ss)
Else
Call MsgBox("Ñðåäíåå ìåíüøå äàííîãî, îñòàíîâêà ïðîãðàììû", vbOKOnly, "Îøèáêà")
End Sub

Private Sub Command1_Click()
g = Val(InputBox("g=", "g", "10"))
pp = sr(a(i%))

End Sub

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


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



SIMarOK, а лто именно не работает?


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
SIMarOK
Дата 23.12.2004, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Сама программа не работает...указывает ошибку Wrong number of arguments or invalid property assigment и указывает на строку
Код

Private Sub Command1_Click() ' сюда
g = Val(InputBox("g=", "g", "10"))
pp = sr(a(i%))


Мне кажется я массив не так указал, все правельно?
Кстати я очень сомниваюсь с функциями, как им передать нужные значения?
PM MAIL   Вверх
Akina
Дата 23.12.2004, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



А у тебя на форме кноп Command1 имеется???


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SIMarOK
Дата 23.12.2004, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



естественно, потвоему как я программу запускаю?%)
PM MAIL   Вверх
boevik
Дата 23.12.2004, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



Точно, куча ошибок.
Начинается с первых же двух строк.
Код

Function a() As Single
Public a(i) As Single



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
SIMarOK
Дата 23.12.2004, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



а какая там ошибка? я не вижу smile
PM MAIL   Вверх
Akina
Дата 23.12.2004, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



SIMarOK
1) совпадение глобальных на уровне модуля имен
2) использование не определенной переменной
Добавлено @ 11:12
Цитата(SIMarOK @ 23.12.2004, 10:56)
естественно, потвоему как я программу запускаю?%)

а связь-то какая?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SIMarOK
Дата 23.12.2004, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я вот незнаю как пожключить функцию без присваивания к переменной...и еще чтоб что-то ей передовалось, в си это просто...имя функции( список параметров) а в басике незнаю...знаю что можно с помощью присвоения, но в моем случае это не используется....
PM MAIL   Вверх
$tatic
Дата 23.12.2004, 17:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Элементарно
Надо просто юзать функцию без скобок
(например msgbox "Hello, world!")
Цитата(SIMarOK @ 23.12.2004, 11:20)
как пожключить функцию без присваивания к переменной


  Вверх
Akina
Дата 23.12.2004, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Цитата
Надо просто юзать функцию без скобок

В общем случае неверно. Не всегда можно использовать бесскобочный вызов.

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

т.е. одно из двух:
Код

msgbox "Hello, world!"
CALL msgbox("Hello, world!")

но второе - правильно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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