Ir ao conteúdo

Posts recomendados

Postado

eu pensei que não estava fazendo certo ou sei la o que

 

1º fiz isso: e funcionou

int Num = 'F';char Letra = 80;cout << Letra << endl;

------------------------------------------------

2º : deu erro

	int Num = 'F';         char Letra = 80; Letra=Num;cout  << Letra  << endl;

------------------------------------------------------------

3º: e funcionou, apareceu as duas letras f e p

	int Num = 'F';         char Letra = 80;     cout  << Letra  << endl;Letra=Num;   cout  << Letra  << endl;

----------------------------------------------------------------

então

    int Num = 'F';   char Letra = 80;                    //cout << Letra << endl;Letra=Num;cout << Letra << endl;

e funcionou ???? :confused:

 

mas por acaso não é igual ao segundo ? :huh:

o que acontece nisso aí?

 

------------------------------------------------------------------------------------------------

pois bem estou tentando fazer uma função seguindo a logica de  int e char

    for (x = 32; x <= 255; x++)        {            if(lx > 254)                {lx = 32;}            lx++;        }saidaw[cw] = lx;

mas está dando erro na saida

return saidaw;
 

Na função 'char* Edenigma(char*, char*, char*)':
cannot convert 'char**' to 'char*' in return

char Edenigma( char * StrWord, char * StrKey, char * NumKeyP){	int	cw = 0, ck, ltw = QLt(StrWord), ltk = QLt(StrKey);	int ltn = QLt(NumKeyP);	int stw, stk, mt[ltk][ltn], x, lx, li, lf;	char saidaw[ltw];

aí tem algum bug nisso...

eu postei aqui e fui fazer o debug e o troço funcionou

 

entrada "o"

saida

dî®

O Processo retornou 0   tempo de execução : 0.007 s
Pressione uma tecla para continuar...

entrada "gg"

saida

pA¿vî²(

O Processo retornou 0   tempo de execução : 0.547 s
Pressione uma tecla para continuar...
 

de qualquer forma eu vou ter que mudar o funcionamento da chave primaria

eu não quero alteração de numero de caracteres

sem falar que para  decodificar eu tenho que inverter as duas chaves

 

mas por que está acontecendo erra irregularidade nas implementações das variaveis??

"ps, não tem goto"

 

também para não ficar com aumento de tempo exponencial para o numero de caracteres o certo é fazer um array,

eu fiz um mas somente para guardar os valores de integração entre uma letra e outra

  • Curtir 1
Postado

a indagação é,

poque uma hora funciona e outra não?

 

eu estou fazendo para assimilar o funcionamento, mas parece que tem coisa que não tem logica

 

tipo

para passar o valor para a função eu tive que usar

    char * str = new char[100];
    str = "f";
    cout  <<  Edenigma(str, "", "111") << endl;

 

se usar

char str="f"

não vai

ao passo que

double valorX = 0;

funciona

 

cara, eu sei que int é um inteiro, numero

 sei que char é strig

sei que uma string é um numero representado como caractere

 

se

int Num = 'F';

pega o numero da letra

e

char Letra = 80;

mostra o numero como letra

porque a primeira vez que tentei

Letra=Num;

não funcionou, e deois funcionou ?

letra é um char

num é um int

 

sobre

cannot convert 'char**' to 'char*' in return

do nada funcionou também <_<

bem, o falcom roda sem precisar salvar será que ele guarda resíduos na hora de compilar?

 

onde eu acho assunto sobre char?

 

 

sobre a forma de programar em sim eu apenas acho o seguinte

os programadores da lingugem pesaram assim...

"eu tive um trabalho ***** para programar isso, mas você´s vão ter que sofrer para entender o funcionamento"


Ps.

vou dar um tempo nisso

é muito stress

 

sei que não sou dos mais espertos

mas acho que uma ferramente era para facilitar o máximo possível

quando eu estava fazendo a função para separar as partes da formula de filtragem

eu adicionei um monte de simbolos  &$#@

 

não sabia sobre phase

mas eu coloquei pela minha incapacidade de fazer algo melhor e que eu pudesse dar um tom mais léxico

 

uma das primeiras tentativas de fazer umas das funções auxiliar de separação

esse é só para separar os núcleos

 

tem outra parte que indendifica pelos simbolos

é para uso proprio, eu sei o funcionamento,

mas se eu tivesse a capacidade de fazer sem esse monte de simbolismos de palavrão eu faria

Public Function FormuLPart(ByVal FormulaX As String, Optional ByVal OcorrenciaX As Long) As LPart    Dim pos As Long, Ax As Long, Ax1 As Long, Ax2 As Long, Ax3 As Long    Dim ltx As Long, Dd As Long, posi As Long, aa As String    'If OcorrenciaX = 0 Then OcorX = 1 Else OcorX = OcorrenciaX    lent1 = Len(FormulaX)    For Ax = 1 To lent1        aa = Mid(FormulaX, Ax, 1)        If aa = "(" Then            If pos = 0 Then Ax1 = Ax            pos = pos + 1        End If        If aa = ")" Then            pos = pos - 1:            If pos = 0 Then Ax2 = Ax: Dd = Dd + 1: GoTo tex:        End If        '  If Dd = OcorX Then GoTo tex:    Next    FormuLPart.Formula = "erro"    FormuLPart.núcleo = "erro"    Exit Functiontex:    For Ax = Ax1 To 1 Step -1        If Mid(FormulaX, Ax, 1) = "@" Then            FormuLPart.Operador = Mid(FormulaX, Ax + 1, Ax1 - Ax - 1)            Ax3 = Ax            Exit For        End If    Next    FormuLPart.Formula = Mid(FormulaX, Ax3, Ax2 - Ax3 + 1)    nucl = Mid(FormulaX, Ax1 + 1, Ax2 - Ax1 - 1)    If OcorrenciaX = 0 Then FormuLPart.núcleo = nucl    If OcorrenciaX > 0 Then        If Left(nucl, 1) <> "@" And OcorrenciaX = 1 Then            dfg = InStr(1, nucl, ",@", 1)            dfg1 = InStr(1, nucl, ")", 1) - 1            If dfg < 1 Or dfg1 < dfg Then dfg = dfg1            If dfg > 0 Then FormuLPart.núcleo = Mid(nucl, 1, dfg - 1) Else FormuLPart.núcleo = "not"        Else            If OcorrenciaX = 0 Then OcorX = 1 Else OcorX = OcorrenciaX            lent1 = Len(nucl)            For Ax = 1 To lent1                aa = Mid(nucl, Ax, 1)                If aa = "(" Then                    If pos = 0 Then Ax1 = Ax                    pos = pos + 1                End If                If aa = ")" Then                    pos = pos - 1:                    If pos = 0 Then Ax2 = Ax: Dd = Dd + 1                End If                If Dd = OcorX Then GoTo tex2:            Next            FormuLPart.núcleo = "not"            Exit Functiontex2:            For Ax = Ax1 To 1 Step -1                If Mid(nucl, Ax, 1) = "@" Then                    FormuLPart.núcleo = Mid(nucl, Ax, Ax2 - Ax + 1)                    Exit Function                End If            Next        End If    End IfEnd Function
Call SplitVALArray(FormulaX, ",", Comand)    Cfco = UBound(Comand) - 1    For c2 = 1 To Cfco        codx = Left(Comand(c2), 1)        If codx = "#" Then            cot = Right(Comand(c2), Len(Comand(c2)) - 1)            Cid = Val(cot): Cfd = Val(cot)        End If        If codx = "%" Then Tipo = Right(Comand(c2), Len(Comand(c2)) - 1)        If codx <> "%" And codx <> "#" Then            c2x = c2            GoTo Opi        End If    Next    ' simbolos dos comandos    '$=plan    '!=setor    '#=coluna, Coluna do array de dados que vai ser analisada    '@=Funções Ex. -->>>     E,OU,dir,esq,<,<>,>,dia,semana,mes,ano,like    '%= tipo para conversão--->>   dia,mes,ano,dir,esq,uni,dez,mil,    '_ = Retorno

 

vou me concentrar mais no vba mesmo, para ficar mais perto de uma solução

e aos pouco vou tentar pegando os pontos "basico"  do C++

 

vou parar de perturbar,

vou seguir mas sem tanta paranoia...

bem, até mais,

  • Curtir 1
Postado

estou lendo algumas coisas

também vi algumas duvidas de outras pessoas

parece que é o maior problema do iniciante

ainda não tive animo de me aprofundar mais

 

2 duvidas,"estou sem animo de sair catando"

 

 

essas variaveis estão criando copias do valor, ou usando o valor original? " se puder responder como colocar parâmetros como opcionais eu agradeço"

double convertNUM( char * StrNum, char * StrReferencia,

como faço para substituir o valor de uma variavel tipo char ?

#include <cstdlib>#include <iostream>#include <string>using namespace std;int QLt(char * lt){	int t = 0;	while(*lt != '\0')		{			lt++;			t++;		}	return t;}double convertNUM( char * StrNum, char * StrReferencia, int ocorrencia, int  quantidade = 0){	double valorX = 0;	int n = 0, L2 = 0, L, C, t = 0, tr;	tr = QLt(StrReferencia);	for ( L = 0; StrNum[L] != '\0'; L++)		{			for (C = 0; C < tr; C++)				{					if (StrNum[L] == StrReferencia[C])						{							n = n + 1;							if (n == 1)								{									L2 = L;								}							if (C < 10)								{									valorX = valorX * 10 + C;								}							goto prxL;						}				}//for StrReferencia			if (n > 0)				{					t++;					if (  ocorrencia == t || ocorrencia == 0)						{							if(StrNum[L2 - 1] == '-')								{									valorX = -valorX;								}							return valorX;						}					else						{							valorX = 0;							n = 0;						}				}prxL:			;		} //for StrNum	return 0;}
int main(){	char Arnut[] = "0123456789.";	char vkk[100] = "maria pagou R$2.000,00  para joão com %20 de desconto";	int n = 1;	cout  <<  convertNUM(vkk, Arnut, n) << endl;//Arnut = "0123456789./";//char vkk = new *char;// vkk[100] = "A data de pagamento é 20/10/2015 2 dias de atraso";	 n = 2;cout  <<  convertNUM(vkk, Arnut, n) << endl;	return  0;}

tá bom, eu to comendo bolo estando de barriga cheia

eu olhei tanta coisa e não vi a pagina que tinha aberto no meio de um monte

http://www.rogercom.com/CursoOnlineLPT/Modulo04/Modulo004Aula005.htm

 

tem muita coisa na internet, a maioria confunde mais do que ajuda,

vi algumas videos aulas legais, mas no segundo minuto já esqueci tudo :muro:

  • Curtir 1
Postado

 

Usando o valor original. Si você tiver uma função que incrementa um numero em um só valor, e essa função esperar um ponteiro, quando você passar a direção de qualquer variável, ela será incrementada no seu mesmo lugar. Por outro lado si a função espera algo por valor, mesmo que incremente esse valor que recebeu a variável original permanecerá intacta, pois será a copia que se incrementará.

Então eu estou usnado dois ponteiros tipo char ?

 

Fiquei meio confuso nessa

eu estou peguntando por que em uma video aula eu vi, falava  que para pegar o  valor da variavel de destino tinha que colocar o * também

e como eu não usei o tal asteritico no meio da macro não sei se estou realmente usando ponteiro

char * StrNum, char * StrReferencia,

if (  StrNum[L] == StrReferencia[C]  )

 

enquanto aqui eu tive que usar o tal *

int QLt(char * lt)

{    int t = 0;

    while( * lt != '\0')

 

sendo que se StrNum for um ponteiro o lt é um ponteiro de ponteiro

 

sobre a troca do valor de char eu fiz assim     strcpy(  vkk, "A data de pagamento é 20/10/2015 2 dias de atraso");

não sei se tem uma forma melhor

  • Curtir 1
Postado

estou tentando me acostumar com a forma de escrever do c

passo mais tempo ajeitando posição de {}, colocando ponto e virgula que esqueço, e == nos if

 

 

a função ficou assim, tem algumas falhas como 2.000,50, eu não coloquei para pegar os centavos

mas como não serviria para nada mesmo vou deixar assim mesmo

o nome da função deveria ser separanum

#include <cstdlib>#include <iostream>#include <string.h>using namespace std;int QLt(char* lt){  int t = 0;  while(*lt != '\0')  {    lt++;    t++;  }  return t;}//-----------------------------------------------------------------------------------------double convertNUM( char* StrNum, char* StrReferencia, int ocorrencia, int  quantidade = 0){  double valorX = 0;  int n = 0, L2 = 0, L = 0, C, t = 0, ts, tr;  ts = QLt(StrNum);  tr = QLt(StrReferencia);  int  d2, ic, pt = 0;  if(ocorrencia >= 0 )  {    L = 0;    d2 = ts + 1;    ic = 1;  }  else//if(ocorrencia < 0 )  {    L = ts;    d2 = -1;    ic = -1;  }  while(L != d2)  {    for (C = 0; C < tr; C++)    {      if (StrNum[L] == StrReferencia[C])      {        n = n + 1;        if (C < 10)        {          if(ic == 1)          {            valorX = valorX * 10 + C;            if (n == 1)            {              L2 = L-1;            }          }          else//  if(ic == -1)          {            if(n > 1)            {              valorX = ((C * pt) + valorX);              pt = pt * 10;            }            else            {              valorX = C ;              pt = 10;            }          }        }        goto prxL;      }    }//for StrReferencia    if (n > 0)    {      t += ic;      if (ocorrencia == t || ocorrencia == 0)      {        if (ic == -1)        {          L2 = L;        }        if(StrNum[L2] == '-')        {          valorX = -valorX;        }        return valorX;      }      else      {        valorX = 0;        n = 0;        pt=0;      }    }prxL:    ;    L += ic;  } //for StrNum  return 0;}//=========================================================================//========================================================================int main(){  char Arnut[] = "0123456789.";  char texto[100];  strcpy(  texto, "maria pagou R$2.000,00 na data 20/10/2015, 2 dias de atraso");    cout  << "valor pago: " << convertNUM(texto, Arnut, 1) << endl;  cout  <<"Dia: "<<  convertNUM(texto, Arnut, -4) << endl;  // aqui a função começa a ler o texto da direita  para a esquerda  cout  <<"mes: " <<  convertNUM(texto, Arnut, -3) << endl;  cout  << "Ano: "<< convertNUM(texto, Arnut, -2) << endl;  cout  << "dias de atraso: " << convertNUM(texto, Arnut, -1) << endl;  return  0;}

 

depois de ajustar algumas coisas na IDE o codigo ficou melhor de postar, mas para escrever ainda tenho que afastar bem para não me perder

 

vou escrever algo diferente para ir me acostumando com  as funções e não só com a escrita

 

por motivo de comparação

como ficaria a mesma coisa escrita de forma mais formal ?

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!