Ir ao conteúdo
  • Cadastre-se
Marcela da Silva de Souza

Excel Algorítimo para Visual Basic paraExcel

Posts recomendados


//Autor: Eduardo V
//Data:05/08/2019
//Adaptado: Marcela
//Declaração das variáveis
Var
//Declaração das variáveis
vet: vetor [1..6]de inteiro
i , cont_pp, cont_ii, cont_pi, cont_ip: inteiro
Início
//
cont_pp<-0
cont_pi<-0
cont_ii<-0
cont_ip<-0
escreval ("Digite todos os números")
para i de 01 até 06 faca
//lendo cada  elemento do vetor
leia(vet[i])
//aqui todo o calculo,se não existir o resto na divisao=pp
//se >= 0=pi
//se existir resto na divisão=pp
//senão ii
se (vet[i]%2) = 0 então
// se pp, o contador recebe seu valor +1
cont_pi<-cont_pi=01
fimse
fimpara
//E sei que bagunça na tela mas estou mostrando na tela todos os lidos
para i de 01 até 06 faca
escreval("Elemento n°",i," do vetor =",vet[i])
fimpara
//finalmente mostrando o resultado
escreval("O total de números lidos foi",cont_pp)
escreval("O total de números lidos foi",cont_pi)
escreval("O total de números lidos foi",cont_ip)
escreval("O total de números lidos foi",cont_ii)
fimalgoritimo

Boa noite pessoal estou tentando rodar esse algorítimo no VBA do EXCEL e não estou conseguindo encontrar o erro  como quero mostrar na planilha a classificação de pp,pi,ii e ip.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcela da Silva de Souza Boa noite,

O código que você postou não é VBA, mas sim visualG.  Não vai funcionar no excel.

Tente você mesma converter esse código para VBA, e posta aqui mesmo que estiver errado, os demais irão corrigir o que estiver errado.

 

Certo de sua compreensão,

Agradeço desde já.

Moderador DiF

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF

9 minutos atrás, DiF disse:

@Marcela da Silva de Souza Boa noite,

O código que você postou não é VBA, mas sim visualG.  Não vai funcionar no excel.

Tente você mesma converter esse código para VBA, e posta aqui mesmo que estiver errado, os demais irão corrigir o que estiver errado.

 

Certo de sua compreensão,

Agradeço desde já.

Moderador DiF

Bem, até que estavam me ajudando mas o tópico foi removido

adicionado 1 minuto depois
1 minuto atrás, Marcela da Silva de Souza disse:

@DiF

hum

 

adicionado 2 minutos depois

Estou tentando, porém não está dando certo...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
9 minutos atrás, Marcela da Silva de Souza disse:

Estou tentando, porém não está dando certo...

Mas você nem tentou. Como mencionei, posta aqui o andamento, o que você já fez.

Apenas postou aqui um código em visualG, esperando que alguém converta para VBA.

Lembre que o trabalho é somente seu, os demais só podem ajudar, mas sem dar o código completo.

 

Por isso, eu peço que você tente, mesmo que errado e posta aqui o que tentou fazer.

 

Deixo um link de aprendizado: https://www.aprenderexcel.com.br/2013/vba/como-usar-uma-vba-no-excel

 

10 minutos atrás, Marcela da Silva de Souza disse:

Bem, até que estavam me ajudando mas o tópico foi removido

O que foi removido, foi um post irregular. 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Eu não sabia que estava em visual G eu sozinha fiz modificações no código não pedi para ninguém somente não sabia que estava em visual G e ao meu ver ele está completo do jeito que eu quero. Vou tentar aquí então.Obrigada

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 09/09/2019 às 23:08, Marcela da Silva de Souza disse:

@DiF 

Olá Sr. Devair 1010 um nerd aquí, por favor poderia me orientar se para eu mostrar se o número é PP= par,par PI=Pai,impar, IP=ímpar, par, e II= ímpar,ímpar eu poderia usar a função if:

If (numero And 1) = 0 Then  MsgBox "é P" Else  MsgBox "Será I" End If?

Como faço na função para reconhecer os números  como PP, PI,II, e IP

Sub imprime_par_ou_impar()
  Dim vet(6)
  Dim str
  Dim x, b As Integer
  cont_ii = 0
  cont_pp = 0
  cont_ip = 0
  cont_pi = 0
  Dim mensagem, titulo, padrão, valor_Lido
  mesagem = "Digite o Número"               ' Set prompt.
  titulo = "Caixa De Entrada De Dados"      ' Set title.
  padrão = "0"                              ' Set default.
  For j = 1 To 6
    valor_Lido = InputBox(mensagem, titulo, padrão, 100, 100) '18900 coluna final da tela
    vet(j) = valor_Lido
  Next
  Range("a1").Interior.Color = vbYellow
  Columns(1).ColumnWidth = 30 'largura da coluna
  Cells(1, 1) = "Número Lido"
  For j = 1 To 6
    Cells(j + 1, 1) = vet(j)
  Next
  Cells(9, 1) = ("O total de números   P P   lidos foi")
  Cells(10, 1) = ("O total de números   P I    lidos foi")
  Cells(11, 1) = ("O total de números   I P    lidos foi")
  Cells(12, 1) = ("O total de números   I I      lidos foi")
  Cells(9, 2) = cont_pp
  Cells(10, 2) = cont_pi
  Cells(11, 2) = cont_ip
  Cells(12, 2) = cont_ii
  Range("a9").Font.Color = RGB(255, 0, 0)
  MsgBox ("Aqui Estão Os Resultados")
End Sub

 

adicionado 19 minutos depois

Imports System
Imports Microsoft.VisualBasic

Private Sub gotoxy_2(ByVal x As Integer, ByVal y As Integer) 'imprimir na linha e coluna desejada
  Dim c As New COORD()
  c.X = x
  c.Y = y
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c)
End Sub
Shared Function Main() As Integer
	Dim i As Integer
	Dim j As Integer
	Dim q As Integer
	Dim t As Integer
	Dim r As Integer
	Dim w As Integer
	Dim x As Integer
	Dim y As Integer
	Dim px As Integer
	Dim py As Integer
	Dim vet(11) As Integer
	Dim cont As Integer =0
	Dim arq As FILE =fopen("Minhas Combinacoes.txt","w")
	For j = 0 To 11
		Do
			Console.Write("{0,2:D}{1} numero ",j+1,167)
			q = 0
			Dim tempVar As String = ConsoleInput.ScanfRead()
			If tempVar IsNot Nothing Then
				vet(j) = Integer.Parse(tempVar)
			End If
			If vet(j)<1 OrElse vet(j)>99 Then
				q = 1
			End If
			For r = 0 To 11
				If vet(j) = vet(r) AndAlso j <> r Then
					q = 1
				End If
			Next r
		Loop While q <> 0
	Next j
	For j = 0 To 10
		For w = j+1 To 11
			If vet(j)> vet(w) Then
				t = vet(j)
				vet(j) = vet(w)
				vet(w) = t
			End If
		Next w
	Next j
	Console.Write(vbLf)
	fprintf(arq,"%s","combinações com esses números  --> ") ' grava no arquivo no bloco de notas
	Dim hOut As IntPtr ' controle dos dispositivos do pc
	hOut = GetStdHandle(STD_OUTPUT_HANDLE) ' pega a saída padrão
	Dim SBInfo As New CONSOLE_SCREEN_BUFFER_INFO() ' informações sobre a buffer da tela
	GetConsoleScreenBufferInfo(hOut, SBInfo) ' pega a posição do cursor do console
	px = SBInfo.dwCursorPosition.X ' pX será a posição da coluna do cursor no console
	py = SBInfo.dwCursorPosition.Y ' pY será a posição da linha do cursor no console
	For j = 0 To 11
		y = vet(j) Mod 10
		x = vet(j)\10
		gotoxy_2(px, py)
		If x Mod 2=0 Then
			Console.Write("P")
		Else
			Console.Write("I")
		End If
		If y Mod 2=0 Then
			Console.Write("P ")
		Else
			Console.Write("I ")
		End If
		gotoxy_2(px, py+1) ' pula para a linha de baixo
		px+=3
		Console.Write("{0:D} ",vet(j)) ' imprime na tela do pc
		fprintf(arq,"|%d| ",vet(j)) ' grava no arquivo
	Next j
	Console.Write(vbLf & vbLf & "     tecle" & vbLf & vbLf)
	fprintf(arq,"%s",vbLf & vbLf)
	Console.ReadKey(True)
	For i = 0 To 5
		For j = i+1 To 11
			For q = j+1 To 11
				For r = q+1 To 11
					For t = r+1 To 11
						For w = t+1 To 11
							cont += 1
							Console.Write("{0,4:D} -> {1:D} - {2:D} - {3:D} - {4:D} - {5:D} - {6:D}" & vbLf, cont,vet(i),vet(j),vet(q),vet(r),vet(t),vet(w))
							fprintf(arq,"%4d -> %d - %d - %d - %d - %d - %d" & vbLf, cont,vet(i),vet(j),vet(q),vet(r),vet(t),vet(w))
							'if(cont==23){cont=-1;printf("   Tecle\n");getch();}
						Next w
					Next t
				Next r
			Next q
		Next j
	Next i
	printf(vbLf & "Total De Cartoes => %d" & vbLf,cont)
	fprintf(arq,"%s%d",vbLf & "Total de cartões => ",cont)
	fclose(arq)
	Console.Write(vbLf & vbLf & "Abra O Bloco De notas e abra esse arquivo --> ")
	Console.Write("(  Minhas Combinacoes  )" & vbLf)
	Console.Write("Que esta na mesma pasta desse programa" & vbLf & vbLf & vbLf)

Tem esse código do outro fórum de vs autoria que converti também para usar em VBA no Excel  tem erros não encontro.😑😿 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para facilitar segue um código simples de ser editado.

 

Sub Prog()
    Dim iVetor(6)   As Integer
    Dim i           As Integer
    Dim iContaPar   As Integer
    
    For i = 0 To 5
        iVetor(i) = InputBox("Elemento n° " & i + 1 & " do vetor: ")
        
        If iVetor(i) Mod 2 = 0 Then
            iContaPar = iContaPar + 1
        End If
    Next i

    MsgBox "Par = " & iContaPar
End Sub

 

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 horas atrás, olliver.soul disse:

Para facilitar segue um código simples de ser editado.

 


Sub Prog()
    Dim iVetor(6)   As Integer
    Dim i           As Integer
    Dim iContaPar   As Integer
    
    For i = 0 To 5
        iVetor(i) = InputBox("Elemento n° " & i + 1 & " do vetor: ")
        
        If iVetor(i) Mod 2 = 0 Then
            iContaPar = iContaPar + 1
        End If
    Next i

    MsgBox "Par = " & iContaPar
End Sub

 

EX: PP= 02,04,06,08,20, 22...

       PI=  01,03,05,07,09,21...

       II=   11,13,15,17,19,31...

       IP= 12,14, 18,30,32,34...

Esses números são compostos por 2 algarismos sempre e a classificação é essa, gostaria que no Excel com VBA fosem destacados esses números e contados qual é a quantidade de cada um respectivamente; quantidade de PP,PI,II e IP.

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcela da Silva de Souza

 

Para responder não precisa usar citação, basta responder na janela de resposta que aparece logo abaixo da última resposta.

Só use citação quando realmente for necessário.

Quando a tua dúvida estiver solucionada, marque o tópico como Resolvido.

Na minha assinatura tem um link para uma instrução de como proceder.

 

[]s

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcela da Silva de Souza Para contar dessa forma é só atribuir os algarismos separadamente e verificar na condicional se é par ou ímpar.

 

Por exemplo,

 

        Dim sVetor(6)   As String

        ' Atribui o primeiro algarismo
        iAlg_1 = Left(sVetor(i), 1)
        ' Atribui o segundo algarismo
        iAlg_2 = Right(sVetor(i), 1)
        
        If (iAlg_1 Mod 2 = 0) And (iAlg_2 Mod 2 = 0) Then PP = PP + 1
        If (iAlg_1 Mod 2 = 0) And (iAlg_2 Mod 2 <> 0) Then PI = PI + 1
    
   

 

Obs: Se for só para contar PP, PI, etc nem precisa usar vetor/array.

  • Obrigado 1
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite,

Então essa parte pode se Pois são 4 valores nessa parte aí seria assim?E como fazer sem vetores?

 

adicionado 31 minutos depois
Em 12/09/2019 às 08:46, olliver.soul disse:

@Marcela da Silva de Souza Para contar dessa forma é só atribuir os algarismos separadamente e verificar na condicional se é par ou ímpar.

 

Por exemplo,

 


        Dim sVetor(6)   As String

        ' Atribui o primeiro algarismo
        iAlg_1 = Left(sVetor(i), 1)
        ' Atribui o segundo algarismo
        iAlg_2 = Right(sVetor(i), 1)
        
        If (iAlg_1 Mod 2 = 0) And (iAlg_2 Mod 2 = 0) Then PP = PP + 1
        If (iAlg_1 Mod 2 = 0) And (iAlg_2 Mod 2 <> 0) Then PI = PI + 1
    If (iAlg_1 Mod 2 = 0) And (iAlg_2 Mod 2 = 0) Then II = II + 1
        If (iAlg_1 Mod 2 = 0) And (iAlg_2 Mod 2 <> 0) Then IP = IP + 1
   

 

Obs: Perdão é assim 

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcela da Silva de Souza     essa parte seria assim  :

Dim Vetor(6)   As String 
dig_1 = Left( Vetor(i), 1)' Atribui o primeiro algarismo
dig_2 = Right(Vetor(i), 2)' Atribui o segundo  algarismo
        
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2  = 0) Then PP = PP + 1
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2 <> 0) Then PI = PI + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2 <> 0) Then II = II + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2  = 0) Then IP = IP + 1

para poucos números pode fazer sem vetor usando uma variável para cada valor digitado ,  mas o código ficaria bem mais longo , pois precisaria repetir uma parte do código várias vezes . ex   :

Dim valor_1, valor_2, valor_3, valor_4, valor_5, valor_6 As String
dig_1 = Left( valor_1, 1)' Atribui o primeiro algarismo
dig_2 = Right(valor_1, 2)' Atribui o segundo  algarismo
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2  = 0) Then PP = PP + 1
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2 <> 0) Then PI = PI + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2 <> 0) Then II = II + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2  = 0) Then IP = IP + 1

dig_1 = Left( valor_2, 1)' Atribui o primeiro algarismo
dig_2 = Right(valor_2, 2)' Atribui o segundo  algarismo
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2  = 0) Then PP = PP + 1
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2 <> 0) Then PI = PI + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2 <> 0) Then II = II + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2  = 0) Then IP = IP + 1

dig_1 = Left( valor_3, 1)' Atribui o primeiro algarismo
dig_2 = Right(valor_3, 2)' Atribui o segundo  algarismo
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2  = 0) Then PP = PP + 1
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2 <> 0) Then PI = PI + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2 <> 0) Then II = II + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2  = 0) Then IP = IP + 1

dig_1 = Left( valor_4, 1)' Atribui o primeiro algarismo
dig_2 = Right(valor_4, 2)' Atribui o segundo  algarismo
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2  = 0) Then PP = PP + 1
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2 <> 0) Then PI = PI + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2 <> 0) Then II = II + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2  = 0) Then IP = IP + 1

dig_1 = Left( valor_5, 1)' Atribui o primeiro algarismo
dig_2 = Right(valor_5, 2)' Atribui o segundo  algarismo
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2  = 0) Then PP = PP + 1
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2 <> 0) Then PI = PI + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2 <> 0) Then II = II + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2  = 0) Then IP = IP + 1

dig_1 = Left( valor_6, 1)' Atribui o primeiro algarismo
dig_2 = Right(valor_6, 2)' Atribui o segundo  algarismo
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2  = 0) Then PP = PP + 1
If(dig_1 Mod 2  = 0) And (dig_2 Mod 2 <> 0) Then PI = PI + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2 <> 0) Then II = II + 1
If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2  = 0) Then IP = IP + 1

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcela da Silva de Souza    depende , se você está estudando e o professor pediu para fazer sem vetor então tem que fazer sem vetor , mas se você quer é criar um código seu para você  usar , então use vetor pois será mais fácil e o código fica menor com menos espaço na memória .

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem vetor pode ser assim,

 

Sub Prog()
    Dim sAlg            As String
    Dim iAlg_1, iAlg_2  As Integer
    Dim PP, PI, II, IP  As Integer
    Dim i               As Integer
    
    PP = 0: PI = 0: II = 0: IP = 0
    
    For i = 0 To 5
        sAlg = InputBox("Elemento n° " & i + 1)
        iAlg_1 = Left(sAlg, 1)
        iAlg_2 = Right(sAlg, 1)
        
        If (iAlg_1 Mod 2 = 0) And (iAlg_2 Mod 2 = 0) Then PP = PP + 1
        If (iAlg_1 Mod 2 = 0) And (iAlg_2 Mod 2 <> 0) Then PI = PI + 1
        If (iAlg_1 Mod 2 <> 0) And (iAlg_2 Mod 2 <> 0) Then II = II + 1
        If (iAlg_1 Mod 2 <> 0) And (iAlg_2 Mod 2 = 0) Then IP = IP + 1
    Next i

    MsgBox "PP = " & PP & vbNewLine & _
            "PI = " & PI & vbNewLine & _
            "II = " & II & vbNewLine & _
            "IP = " & IP & vbNewLine
End Sub

 

Mas se o exercício pedir algo a mais, acho que você de adaptar o código.

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, boa noite, realmente o exercício está pedindo tem até um código que tem todas as funções porém ele está dando erros🤔:

Imports System
Imports Microsoft.VisualBasic

Private Sub gotoxy_2(ByVal x As Integer, ByVal y As Integer) 'imprimir na linha e coluna desejada
  Dim c As New COORD()
  c.X = x
  c.Y = y
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c)
End Sub
Shared Function Main() As Integer
	Dim i As Integer
	Dim j As Integer
	Dim q As Integer
	Dim t As Integer
	Dim r As Integer
	Dim w As Integer
	Dim x As Integer
	Dim y As Integer
	Dim px As Integer
	Dim py As Integer
	Dim vet(11) As Integer
	Dim cont As Integer =0
	Dim arq As FILE =fopen("Minhas Combinacoes.txt","w")
	For j = 0 To 11
		Do
			Console.Write("{0,2:D}{1} numero ",j+1,167)
			q = 0
			Dim tempVar As String = ConsoleInput.ScanfRead()
			If tempVar IsNot Nothing Then
				vet(j) = Integer.Parse(tempVar)
			End If
			If vet(j)<1 OrElse vet(j)>99 Then
				q = 1
			End If
			For r = 0 To 11
				If vet(j) = vet(r) AndAlso j <> r Then
					q = 1
				End If
			Next r
		Loop While q <> 0
	Next j
	For j = 0 To 10
		For w = j+1 To 11
			If vet(j)> vet(w) Then
				t = vet(j)
				vet(j) = vet(w)
				vet(w) = t
			End If
		Next w
	Next j
	Console.Write(vbLf)
	fprintf(arq,"%s","combinações com esses números  --> ") ' grava no arquivo no bloco de notas
	Dim hOut As IntPtr ' controle dos dispositivos do pc
	hOut = GetStdHandle(STD_OUTPUT_HANDLE) ' pega a saída padrão
	Dim SBInfo As New CONSOLE_SCREEN_BUFFER_INFO() ' informações sobre a buffer da tela
	GetConsoleScreenBufferInfo(hOut, SBInfo) ' pega a posição do cursor do console
	px = SBInfo.dwCursorPosition.X ' pX será a posição da coluna do cursor no console
	py = SBInfo.dwCursorPosition.Y ' pY será a posição da linha do cursor no console
	For j = 0 To 11
		y = vet(j) Mod 10
		x = vet(j)\10
		gotoxy_2(px, py)
		If x Mod 2=0 Then
			Console.Write("P")
		Else
			Console.Write("I")
		End If
		If y Mod 2=0 Then
			Console.Write("P ")
		Else
			Console.Write("I ")
		End If
		gotoxy_2(px, py+1) ' pula para a linha de baixo
		px+=3
		Console.Write("{0:D} ",vet(j)) ' imprime na tela do pc
		fprintf(arq,"|%d| ",vet(j)) ' grava no arquivo
	Next j
	Console.Write(vbLf & vbLf & "     tecle" & vbLf & vbLf)
	fprintf(arq,"%s",vbLf & vbLf)
	Console.ReadKey(True)
	For i = 0 To 5
		For j = i+1 To 11
			For q = j+1 To 11
				For r = q+1 To 11
					For t = r+1 To 11
						For w = t+1 To 11
							cont += 1
							Console.Write("{0,4:D} -> {1:D} - {2:D} - {3:D} - {4:D} - {5:D} - {6:D}" & vbLf, cont,vet(i),vet(j),vet(q),vet(r),vet(t),vet(w))
							fprintf(arq,"%4d -> %d - %d - %d - %d - %d - %d" & vbLf, cont,vet(i),vet(j),vet(q),vet(r),vet(t),vet(w))
							'if(cont==23){cont=-1;printf("   Tecle\n");getch();}
						Next w
					Next t
				Next r
			Next q
		Next j
	Next i
	printf(vbLf & "Total De Cartoes => %d" & vbLf,cont)
	fprintf(arq,"%s%d",vbLf & "Total de cartões => ",cont)
	fclose(arq)
	Console.Write(vbLf & vbLf & "Abra O Bloco De notas e abra esse arquivo --> ")
	Console.Write("(  Minhas Combinacoes  )" & vbLf)
	Console.Write("Que esta na mesma pasta desse programa" & vbL

 

adicionado 57 minutos depois
50 minutos atrás, Marcela da Silva de Souza disse:

Ok, boa noite, realmente o exercício está pedindo tem até um código que tem todas as funções porém ele está dando erros🤔:


Imports System
Imports Microsoft.VisualBasic

Private Sub gotoxy_2(ByVal x As Integer, ByVal y As Integer) 'imprimir na linha e coluna desejada
  Dim c As New COORD()
  c.X = x
  c.Y = y
  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c)
End Sub
Shared Function Main() As Integer
	Dim i As Integer
	Dim j As Integer
	Dim q As Integer
	Dim t As Integer
	Dim r As Integer
	Dim w As Integer
	Dim x As Integer
	Dim y As Integer
	Dim px As Integer
	Dim py As Integer
	Dim vet(11) As Integer
	Dim cont As Integer =0
	Dim arq As FILE =fopen("Minhas Combinacoes.txt","w")
	For j = 0 To 11
		Do
			Console.Write("{0,2:D}{1} numero ",j+1,167)
			q = 0
			Dim tempVar As String = ConsoleInput.ScanfRead()
			If tempVar IsNot Nothing Then
				vet(j) = Integer.Parse(tempVar)
			End If
			If vet(j)<1 OrElse vet(j)>99 Then
				q = 1
			End If
			For r = 0 To 11
				If vet(j) = vet(r) AndAlso j <> r Then
					q = 1
				End If
			Next r
		Loop While q <> 0
	Next j
	For j = 0 To 10
		For w = j+1 To 11
			If vet(j)> vet(w) Then
				t = vet(j)
				vet(j) = vet(w)
				vet(w) = t
			End If
		Next w
	Next j
	Console.Write(vbLf)
	fprintf(arq,"%s","combinações com esses números  --> ") ' grava no arquivo no bloco de notas
	Dim hOut As IntPtr ' controle dos dispositivos do pc
	hOut = GetStdHandle(STD_OUTPUT_HANDLE) ' pega a saída padrão
	Dim SBInfo As New CONSOLE_SCREEN_BUFFER_INFO() ' informações sobre a buffer da tela
	GetConsoleScreenBufferInfo(hOut, SBInfo) ' pega a posição do cursor do console
	px = SBInfo.dwCursorPosition.X ' pX será a posição da coluna do cursor no console
	py = SBInfo.dwCursorPosition.Y ' pY será a posição da linha do cursor no console
	For j = 0 To 11
		y = vet(j) Mod 10
		x = vet(j)\10
		gotoxy_2(px, py)
		If x Mod 2=0 Then
			Console.Write("P")
		Else
			Console.Write("I")
		End If
		If y Mod 2=0 Then
			Console.Write("P ")
		Else
			Console.Write("I ")
		End If
		gotoxy_2(px, py+1) ' pula para a linha de baixo
		px+=3
		Console.Write("{0:D} ",vet(j)) ' imprime na tela do pc
		fprintf(arq,"|%d| ",vet(j)) ' grava no arquivo
	Next j
	Console.Write(vbLf & vbLf & "     tecle" & vbLf & vbLf)
	fprintf(arq,"%s",vbLf & vbLf)
	Console.ReadKey(True)
	For i = 0 To 5
		For j = i+1 To 11
			For q = j+1 To 11
				For r = q+1 To 11
					For t = r+1 To 11
						For w = t+1 To 11
							cont += 1
							Console.Write("{0,4:D} -> {1:D} - {2:D} - {3:D} - {4:D} - {5:D} - {6:D}" & vbLf, cont,vet(i),vet(j),vet(q),vet(r),vet(t),vet(w))
							fprintf(arq,"%4d -> %d - %d - %d - %d - %d - %d" & vbLf, cont,vet(i),vet(j),vet(q),vet(r),vet(t),vet(w))
							'if(cont==23){cont=-1;printf("   Tecle\n");getch();}
						Next w
					Next t
				Next r
			Next q
		Next j
	Next i
	printf(vbLf & "Total De Cartoes => %d" & vbLf,cont)
	fprintf(arq,"%s%d",vbLf & "Total de cartões => ",cont)
	fclose(arq)
	Console.Write(vbLf & vbLf & "Abra O Bloco De notas e abra esse arquivo --> ")
	Console.Write("(  Minhas Combinacoes  )" & vbLf)
	Console.Write("Que esta na mesma pasta desse programa" & vbL

Esse código não está adaptado com o último código que você postou p eu ver será que esse aí precisa que eu insira esse código ou assim já roda a função adequadamente?

Segue abaixo o trecho do código:

 

Dim Vetor(6) As String dig_1 = Left( Vetor(i), 1)

' Atribui o primeiro algarismo dig_2 = Right(Vetor(i), 2)

' Atribui o segundo algarismo

If(dig_1 Mod 2 = 0) And (dig_2 Mod 2 = 0) Then PP = PP + 1

If(dig_1 Mod 2 = 0) And (dig_2 Mod 2 <> 0) Then PI = PI + 1

If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2 <> 0) Then II = II + 1

If(dig_1 Mod 2 <> 0) And (dig_2 Mod 2 = 0) Then IP = IP + 1

adicionado 57 minutos depois
57 minutos atrás, Marcela da Silva de Souza disse:

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcela da Silva de Souza  Esse último código que você postou não vai rodar no VBA/Excel.

 

E ele tem vários recursos: manipula arquivos, tem bubble sort, etc. Seu programa precisa dessas funções? E você precisa converter isso para o VBA/Excel?

 

O que precisa ser adaptado? Você está tentando adaptar o último código que eu postei com esse? Se sim, o que falta?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim estou tentando adaptar seu código com esse aí.Preciso de várias funções para aplicar no EXCEl. Esse código antes foi desenvolvido no em C++ aí passei para VBA c ajuda de um conversor acho que não saiu certinho.

adicionado 3 minutos depois
14 horas atrás, devair1010 disse:

@Marcela da Silva de Souza      qual compilador você está usando  para fazer esse código  ?  

Olá tinha um código em C++ seu então usei o C++ to VBA converter para me ajudar então deve ter erros.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, olliver.soul disse:

@Marcela da Silva de Souza  Esse último código que você postou não vai rodar no VBA/Excel.

 

E ele tem vários recursos: manipula arquivos, tem bubble sort, etc. Seu programa precisa dessas funções? E você precisa converter isso para o VBA/Excel?

 

O que precisa ser adaptado? Você está tentando adaptar o último código que eu postei com esse? Se sim, o que falta?

O programa deve:

Mostrar números PP, PI, II, IP

Esses números deverão se subtrair entre si sendo uqe números que tiverem 0 serão contados como dezena como 10 ex: 

02,        04

10-2= 8 10-4= 6...E tem mais funções

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, Marcela da Silva de Souza disse:

O programa deve:

Mostrar números PP, PI, II, IP

Esses números deverão se subtrair entre si sendo uqe números que tiverem 0 serão contados como dezena como 10 ex: 

02,        04

10-2= 8 10-4= 6...E tem mais funções

 

E ainda tem que ter função de contar a quantidade de cada categoria PP,PI,II,IP ex:

PP= 30

PI= 28

II= 27

IP= 10

E mostrar qual categoria que obteve mais números ex:

PP= 30

Essas são as funções básicas além de ter a função para que o usuário possa digitar de 6 a 15 números dependendo do jogo e escolha dele. Esses são os comandos básicos.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Marcela da Silva de Souza    você quer dizer que está usando o editor do visual basic do excel ?    

     você precisa pesquisar para ver os comandos do vba ,   por exemplo no visualg o comando para leitura do teclado é  leia  e no c é  scanf no c++ é cin e no vba é inputbox ,   assim você faz a conversão ,  mas cada linguagem tem seus modos de funcionamento , nas outras linguagem existe o console onde tem a saída dos resultados que são impressos na tela , e no vba a saída é nas células da planilha ou na caixa de mensagem MsgBox ,  então toda aquela função gotoxy não funciona no vba , e para pegar cada dígito do número e ver se é par ou ímpar você pode fazer do mesmo modo que na linguagem  c  ,  ou no vba tem outro modo mais fácil que o  @olliver.soul   postou ,  mas você é que precisa fazer o código , pois se fizermos ele para você ,  você  não aprende ,  e pelas regras do fórum não podemos dar códigos prontos ,  só podemos ajudar no que estiver de errado no seu código ,  dando dicas  .

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!