-
Posts
3.284 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Ansi C postou
-
Acho que sim.
-
É outra faixa sim que integra certa dificuldade de implementação. A complexidade engloba até codificação de arquivos. Não é difícil de fazer, é difícil de ensinar.
-
Isso mesmo, como já exemplificado, as chamadas literais~char são representações dos valores da tabela ASCII dentro do nosso código-fonte. Inclusive recomendam o uso das literais sempre. PS.: Fica mais bonito de se ver também
-
Algo a ir pensando desde de agora, inclusive investigando se é ou não maiúscula da inicio a solução do problema, pois a distancia entre Z - A é igual a distância entre a - z. Com isso basta obter a diferença e somar: Seja x:= frase[0] Se A <= x <= Z: x é maiúscula nada se fazer Se a <= x <= z: então faça: x = x-a + A. Resolvido Claro que pode também deslocar toda a distância -16 como propostos. Fica essa solução como alternativa adicionado 2 minutos depois Depende mesmo do enunciado. adicionado 4 minutos depois Isso só facilitou, basta agora saber quais os recursos que podem e devem ser usados, segundo o enunciado.
-
Encontrei outro erro: O que lhe garante que a frase já não começa com letra maiúscula, ou pior com número, ou sinal. Pois a pergunta do programa é "Escreva a frase". Ex.: Escreva a frase: Ás vezes ༼ಢ_ಢ༽ ▍
-
Eu tentei, mais não tenho jeito para coisa! Melhor é mesmo deixar a didática para os professores e exemplificar por código-fonte que é muito melhor +1000 palavras :3 #include <stdio.h> void troca(int tamanho, char *stra, char *strb){ char aux; for (int i = 0; i < tamanho; i++) { aux = *(stra + i); *(stra + i) = *(strb + i); *(strb + i) = aux; }/* printf("o valor de strx e %s.\n", strx); printf("O valor de stry e %s.\n", stry); */ } int main(void) { char nome1[100]; char nome2[100]; printf("%s","Entre com dois nomes? "); scanf(" %s%s", nome1,nome2 ); printf("%s","Antes da troca\n\n"); printf("1-%s\n2-%s\n", nome1,nome2); // troca(100, nome1, nome2); // printf("%s","Depois da troca\n"); printf("1-%s\n2-%s\n", nome1,nome2); return 0; } Ou Assim: #include <stdio.h> void troca(int tamanho, char stra[tamanho], char strb[tamanho]){ char aux; for (int i = 0; i < tamanho; i++) { aux = stra[i]; stra[i] = strb[i]; strb[i] = aux; }/* printf("o valor de strx e %s.\n", strx); printf("O valor de stry e %s.\n", stry); */ } int main(void) { char nome1[100]; char nome2[100]; printf("%s","Entre com dois nomes? "); scanf(" %s%s", nome1,nome2 ); printf("%s","Antes da troca\n"); printf("1-%s\n2-%s\n\n", nome1,nome2); // troca(100, nome1, nome2); // printf("%s","Depois da troca\n"); printf("1-%s\n2-%s\n", nome1,nome2); return 0; } Então aí, 2/1000 maneiras de fazer um troca de strings.
-
Cara! Temos que prestar atenção em duas: Não existe passagem por referência em C. Quando declaramos um vetor, acessamos o seu item pela sintaxe de vetores. É uma questão de consistência ou se perde em entendimento: /* Declarando um Vetor de caracteres e Acessando um caractere */ /* Variáveis do Programa */ char meu_nome[47]; /* --reservei um conjunto de tipos char x47 itens */ char letra; /* --reservei um tipo char */ /* Copiar AnsiC --> vetor: meu_nome */ strcpy(meu_nome, "AnsiC"); /* Copiar a primeria letra/item no vetor: meu_nome */ letra = meu_nome[0]; /* --atribui a primeria letra do vetor a variável*/ if (meu_nome[0] == letra) { printf("%s","Sim iguais\n"); /* --a resposta é sim */ } else { printf("%s","Nao iguais\n"); } Você está insistindo no erro: Está colando asteriscos (sintaxe de ponteiros), mesmo depois de ter referenciado com sintaxe de vetor [], então você deve escolher uma com as duas "vira a maior bagunça". Nesses termos temos então: printf("O nome 1 é o %c.\n", *(nome1 + i)); ou assim: printf("O nome 1 é o %c.\n", nome1[i]); São duas maneiras para a mesma coisa, porém certa. É difícil aprender isso? Outra coisa quando desejar imprimir um caractere, use %c, para imprimir todo um vetor/string use %s. No caso acima, você errou. "Em outros palavras, você não aprendeu a usar o printf, e quer entender ponteiros que é bem mais avançado que isso". Boa Sorte! ***Até Meu último ato é: Recomendar essa pagina de estudos >>> https://www.cprogressivo.net/
-
void troca_nome(char *nome1, char *nome2){ setlocale(LC_ALL,"Portuguese"); char aux[100]; strcpy(aux, nome1); strcpy(nome1, nome2); strcpy(nome2, aux); printf("O primeiro nome e o %s.\n", nome1); /* -- Atenção aqui (%s) esse string de formatação precisa de um ponterio para char, sem colocar asterisco antes no identificador no argumento. O correto é semelhante aos argumentos na função strcpy. *-*/ printf("O segundo nome e o %s.\n", nome2); /* -- Mesma ocorrência que acima ^-*/ } Saiba que tantos os vetores que foram passados por argumento nos parâmetros quanto os da principal são os mesmos, e foram modificados. Experimente imprimi-los antes e depois da chamada da função. ATUALIZADO: Em C, todas as passagens são por valor, esse conceito de valor e referência pertence ao C++. Acho melhor não pensar nisso por enquanto.
-
Poste para avaliação apenas o que do primeiro código-fonte você mudou, daí nos orientamos se acertou ou se está próximo.
-
C Pesquisa sobre dados de habitantes de uma região
Ansi C respondeu ao tópico de Felipe Fernandez em C/C#/C++
Pois então, vetores são como matrizes de um dimensão (unidimensionais). Vetores são coleções de dados de um só tipo (conjunto) que podem ser acessados diretamente da memória que lhe é reservada sem problemas. Para isso, conta o programador com o identificador que é o nome do vetor. Daí uma típica declaração de vetor é seguida do tipo do objeto, mais o seu nome e por ultimo seu alcance ou do inglês range. tipo-objeto nome-objeto[ alcance ] Acima o forma clássica de se declarar um vetor. Existem outras formas, entretanto, essa é mais didática. Para acessar um elemento do conjunto operamos com sintaxe muito parecida com a que vimos na declaração, mais desta vez não definimos o tipo e o range. Assim por exemplo: /* Exemplo de Declaração e Acesso a itens do Vetor */ int idades[100]; /* -- Declarei o vetor e reservei 100 ints na memória */ int minha_idade; /* -- Declarei uma variável e reservei 1 int na memória */ minha_idade = idades[2]; /* -- Atribui a 3ª idade do conjunto de idades */ /* [!] * Perceba que o índice é 2, contudo, estamos acessando o terceiro elemento * As operações de memória funcionam assim; o primeiro elemento do conjunto * é zero [0] e o último elemento é o range - 1, nesse exemplo o último ele- * mento é [99]. Legal né! *-*/ Entendeu isso, já sabe isso então nos pergunte outra coisa ou demostre o que além já tem feito? ATUALIZADO: Precisará conhecer também instruções/estruturas de repetição. Uma delas apenas para resolver a questão. -
C Pesquisa sobre dados de habitantes de uma região
Ansi C respondeu ao tópico de Felipe Fernandez em C/C#/C++
O que está estudando, aprendeu sobre matrizes e ponteiros, funções e operadores condicionas[==,!=,>=,<=,> e <]? -
Então, aqui acima nos temos a declaração de dois vetores, sabemos disso principalmente por conta da sintaxe tipo-objeto nome-objeto[ quantidade ]; A parte interessante aqui é o nome-objeto, pois ele é um ponteiro, porém diferente dos ponteiros comuns esse ponteiro não pode ser modificado, ou seja não podemos fazer algo do tipo: nome1 = nome2; Fora essa limitação todas a demais propriedades de ponteiros são aplicáveis. Disso vem: void troca_nome(char *nome1[100], char *nome2[100]); //# Os parâmetros estão errados void troca_nome(char nome1[], char nome2[], int tamanho); //# Agora sim, representação por meio de ponteiros notação de vetores /**[!] * Isso já é o bastantes para se identificar um vetor ou matriz * unidimensional do tipo char no parâmetro */ /* OU TAMBÉM */ void troca_nome(char *nome1, char *nome2, int tamanho); //# Agora sim, representação por meio de ponteiros notação de ponteiros /**[!] * Isso já é o bastantes para se identificar um vetor ou matriz * unidimensional do tipo char no parâmetro */ Contudo, se além de orientar os vetores nos parâmetros quisesse eu indicar que são matrizes literalmente faria assim: void troca_nome(int tamanho, char nome1[tamanho], char nome2[tamanho]); // +1 notação de parâmetros com vetores .. . Entendeu? adicionado 5 minutos depois void troca_nome(char *nome1[100], char *nome2[100]); Observação: Essa notação não está errada, só não está correta para o tipo de variável pela qual estais a passar. Porque essa notação é para vetores de ponteiros do tipo char, e não para vetores do tipo char. Percebe a diferença?
-
C++ Arquivo .txt busca e armazenamento de uma inscrição
Ansi C respondeu ao tópico de MatheusTITributos em C/C#/C++
Aqui que tá, as variáveis ponteiro só apontam. -
C >> C++ >>> C# Quando se fala de programação para Windows está se falando de C#, essa # até parece a janelinha do logo Windows né!
-
O novo arquivo está em branco!?
-
C Programa que lê um vetor de 15 posiçoes e retorne um outro vetor dos ns primos.
Ansi C respondeu ao tópico de anderson de freitas em C/C#/C++
Acrescento ainda o fato que essa programação não "retornou". Programa que lê um vetor de 15 posiçoes e retorne um outro vetor dos ns primos. Entendemos programa como sendo um outro nome para rotina, no caso do C toda função é um ou mais programa. Ainda sim, mesmo que use a função main ele não deve constar como rotina para solução, pois o interessante é que haja um "retorno" como está no título do poster. Esse retorno pode ser figurado, ou seja não precisaria se de fato retornado pela declaração return, podendo para isso utilizamos um de outro tipo de retorno, retorno por parâmetro de saída da lista de parâmetros da função é um tipo de retorno. ▎ Para ilustração segue o seguinte protótipo de exemplo: int* primos( const int largura, const int conjunto[largura],int primos[largura] ) { /* Aqui vem o algoritmo */ return ((int*)primos); } Observe que os dois primeiros parâmetros foram modificados por const indicando que esses não serão modificados, já o último não tem a mesma indicação. Essa artimanha pode ser vista nas funções da biblioteca string (string.h). Damos boa indicação de qual é qual, assim os parâmetros de saída são diferenciados dos de entrada. ▎ Espero que tenha sido útil, de qualquer forma foi um prazer. -
Talvez devas estudar o básico dos tipos em C. /* * Menu 1: Deverá chamar uma função do tipo void que solicite ao usuário um * número e imprima a seguinte estrutura, conforme número informado * (exemplo para número 4): * * 4 4 4 4 * 3 3 3 * * 2 2 * * * 1 */ void menu_01( void ) { int para= 0; printf( "%s","Informe um para?\n: " ); /* escrever no prompt */ scanf( " %d",¶ ); /* ler no prompt para inteiro */ int a= 0; while (a < para) { int b= a; while (b < para) { printf( "%d ",para - a ); b+= 1; } int c= a + 1; while (0 < c&&c < para) { printf( "%s ","*" ); c+= -1; } a+= 1; } printf( "%s","\n" ); return; } Não sei o que fazer para que sua implementação funcione, Fiz essa acima para comparação. O enunciado tem problema na exibição dos números '332', não faz sentido.
-
Pergunte, e tire suas dúvidas ...
-
Passe por linha de comando! Set id=usuario Set pw=senha ...\main.exe %id% %pw% O programa main.exe deve ter os parâmetros para receber as duas strings.
-
@giu_d Foi voce que implementou? Podemos unir as duas em uma só.
-
maior_m= producao_mes[0][7]; // VER QUEM MAIS PRODUZIU EM AGOSTO maior_e= 0; for (i= 0; i < qtde_e; i++) { maior_m= producao_mes[i][7]; if (producao_mes[i][7] > maior_m) { maior_m= producao_mes[i][7]; maior_e= i; } } maior_a= producao_ano[0]; // VER QUEM MAIS PRODUZIU NO ANO for (i= 0; i < qtde_e; i++) { if (producao_ano[i] > maior_a) { maior_a= producao_ano[i]; } } printf( "%s%d%s%s","\nA maior producao no mes de agosto foi ",maior_m, " da empresa ",empresas[maior_e] ); printf( "%s%d","\nA maior producao anual foi ",maior_a ); Testa assim.
-
j está começando com 0 aqui. Logo Janeiro é 0. j só vai até 11 termina quando igual a 12. Quando j:= 0, a mensagem é 1. adicionado 6 minutos depois Aqui também não esta imprimindo a maior produz do mês de agosto!
-
for(i= 0; i < qtde_e; i++) { // VER A PRODUÇÃO TOTAL DO ANO for (j= 0; j < 12; j++) { producao_ano[i]+= producao_mes[i][j]; } } Veja assim, como em seu código adicionado 1 minuto depois Acho que sim! adicionado 3 minutos depois maior_m= p_agosto[0][7]; // VER QUEM MAIS PRODUZIU EM AGOSTO for (i= 0; i < qtde_e; i++) { p_agosto[i][7]= producao_mes[i][7]; if (p_agosto[i][7] > maior_m) { maior_m= p_agosto[i][7]; /* ?| gardaria aqui a posicao tambem para depois imprimir o nome da empresa na posicao */ } }
-
int producao_ano[qtde_e]; // !| antes estatico agora dinamico /* Eu pensei que esse vetor fosse o consolidado anual de todas as empresas * Se estou certo então ele é um dos dinamicos */ Fiz como acima!
-
Está tudo muito Da!Hora , então fiz um copia aqui e verifiquei que apenas a variável producao_ano também deveria ser dinâmica, pois depende do números de empresas, certo? adicionado 6 minutos depois Outra coisa em producao_mes o índice referente a agosto é 7, porém está 8. 0- jan ... 7- ago
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