Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic

Войти
Регистрация
Восстановить пароль
 
Sysn1k
0 / 0 / 0
Регистрация: 22.12.2016
Сообщений: 8
#1

String. Исправьте ошибку - VB

28.12.2016, 18:55. Просмотров 235. Ответов 6
Метки нет (Все метки)

Дана строка. Если она представляет собой запись целого числа, то вывести 1, если вещественного (с дробной частью) — вывести 2; если строку нельзя преобразовать в число, то вывести 0. Считать, что дробная часть вещественного числа отделяется от его целой части десятичной точкой «.».

Вот так выглядит в Pascal

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var s:string;
     r:real;
     t,c:integer;
begin
write('s=');
readln(s);
val(s,t,c);
if c=0 then write('1')
else
 begin
  val(s,r,c);
  if c=0 then write('2') 
  else write('0');
 end;
readln
end.
Вот так пытался сделать в Basic

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub CommandButton1_Click() 
Dim s As String, i, err As Integer, r As Double 
s = Val(TextBox1.Text) 
For i = 1 To Len(s) 
err = Mid(s, i, 1) 
''val(s,i,err); 
If err = 0 Then 
TextBox2.Text = "1" 
Else 
err = Mid(s, r, 1) 
''val(s,r,err); 
If err = 0 Then 
TextBox2.Text = "2" 
Else 
TextBox2.Text = "0" 
End If 
End If 
Next i 
End Sub
Программа жалуется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2016, 18:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос String. Исправьте ошибку (VB):

2 ичная система счисления в 10 тичную! исправьте пожайлуста код! - Visual Basic
Вот код: Function CDecVal(l As String) As Long Dim i As Integer, sum As Long Dim n As Integer S = 2 n = Len(l) For i = 0 To n -...

Исправьте ошибку string subscript out of range - C++
#include <iostream> #include <string> #include <vector> using namespace std; int main () { string s = "222/2"; ...

Ребят Незнаю что делать при запуске на компилирование выдает ошибку.Кто понимает что не так скажите а если не затруднит исправьте ошибку - C++
Разговаривал с двумя преподами говорят что проект не правильно создавал,хотя все правильно из группы спрашивал у парней говорят что не...

исправьте ошибку - Delphi
Дан двумерный массив размерности 10х10. Заполнить его случайными числами на отрезке . Найти максимальный элемент каждой строки. Результат...

Исправьте ошибку...... - C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication13 { ...

Исправьте ошибку - VBA
Option Explicit Public DlMass As Integer Public RangMass As Range Sub Number() With RangMass ...

6
morgann55
1364 / 206 / 35
Регистрация: 09.02.2012
Сообщений: 745
31.12.2016, 05:50 #2
Visual Basic
1
s = Val(TextBox1.Text) ' нельзя присваивать числовое значение переменной, которую объявил строкой!!!
вот вариант:

Visual Basic
1
2
3
4
5
If Val(s) Then ' если перевод в число истина
   TextBox2.Text = IIf(InStr(s, ".") = 0, "1", "2") ' выбор от наличия в строке точки "1" или "2"
Else
   TextBox2.Text = "0" ' иначе "0"
End If
0
Catstail
Модератор
22831 / 11197 / 1812
Регистрация: 12.02.2012
Сообщений: 18,438
31.12.2016, 09:58 #3
Visual Basic
1
2
3
4
5
6
7
8
9
       If isNumeric(S$) then
         If Instr(S$,".")=0 then
            debug.print 1
         else
            debug.print 2
         end if
       else
         debug.print 0
       end if
1
morgann55
1364 / 206 / 35
Регистрация: 09.02.2012
Сообщений: 745
31.12.2016, 10:22 #4
Catstail, привет! Что-то ты не так составил - пишет ноль на s = "1.2"

А вот то что isNumeric на целую строку можно применять, это я как-то не дотумкал) Спасибо за пример!
0
Catstail
Модератор
22831 / 11197 / 1812
Регистрация: 12.02.2012
Сообщений: 18,438
31.12.2016, 10:30 #5
morgann55, приветствую и Наступающим! Но проблема - в системном разделителе у Вас на ПК. Скорее всего, у Вас запятая. Чтобы код сработал, нужно:
Visual Basic
1
   If (Instr(S$,".")=0) And (Instr(S$,",")=0) then
0
morgann55
1364 / 206 / 35
Регистрация: 09.02.2012
Сообщений: 745
31.12.2016, 15:25 #6
Да, в старой конструкции s = "1,2" нормально отрабатывает, а при двойном условии при And, Or не работает( Только вот так:

Visual Basic
1
If (Instr(S$,".")=0) Xor (Instr(S$,",")=0) then
0
fever brain
oh my god
817 / 393 / 77
Регистрация: 05.01.2016
Сообщений: 1,099
Записей в блоге: 7
31.12.2016, 17:44 #7
Условие можно организовать так:
Если не является числом то 0 проверяется сверху вниз, все остальное уже будет считаться числом
Если же фиксированная часть равна самому числу то 1 (целое число тоесть)
Все остальное это дробное число.

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub cb_Click()
    If Not IsNumeric(tx) Then
        Debug.Print 0
    ElseIf Fix(tx) = tx Then
        Debug.Print 1
    Else
        Debug.Print 2
    End If
End Sub
Ниже представлен код в котором точка заменяется запятой, и невозможность второй запятой
Целиком программа вместе с кнопками выглядит так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Explicit
Dim WithEvents tx As TextBox, WithEvents cb As CommandButton
 
Private Sub tx_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
    Case 48 To 57, 8
    Case 44, 46, 225, 254
        If InStr(1, tx, ",") Then KeyAscii = 0 Else KeyAscii = 44
    Case Else: KeyAscii = 0
    End Select
End Sub
 
Private Sub cb_Click()
    Const rz = "Результат = "
    If Not IsNumeric(tx) Then
        Caption = rz & 0
    ElseIf Fix(tx) = tx Then Caption = rz & 1
    Else: Caption = rz & 2
    End If
End Sub
 
Private Sub Form_Load()
    Const r = 90
    Dim l&
    Set tx = Controls.Add("vb.TextBox", "tx"): With tx
        .Move r, r: l = .Left + .Width + r
        .Visible = 1
    End With
    Set cb = Controls.Add("vb.CommandButton", "cb"): With cb
        .Move l, r
        .Caption = "Вывести"
        .Visible = 1
    End With
End Sub
2
31.12.2016, 17:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2016, 17:44
Привет! Вот еще темы с ответами:

исправьте ошибку - Pascal
Если в матрице А нет элементов модуль которых отличается от заданной величины Р менее, чем на заданную величину Е, найти для каждой ее...

Исправьте ошибку - Delphi
Здравствуйте есть код procedure TForm1.Chromium1BeforePopup(Sender: TObject; const parentBrowser: ICefBrowser; var popupFeatures:...

исправьте ошибку - Delphi
program Project5; {$APPTYPE CONSOLE} uses SysUtils; var a:array of integer; i,t,x,z,o:integer; begin { TODO...

исправьте ошибку - Pascal
исправьте ошибку - не может найти указанный путь. И вообще эта программа считается базой данных? program Phonebook; uses Crt; type...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru