Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Escreva um programa C para mover todos os zeros para o final do vetor, sem alterar a ordem dos elementos já presentes no array - Exercícios Resolvidos de C

Quantidade de visualizações: 816 vezes
Pergunta/Tarefa:

Dado o seguinte vetor de inteiros:

// vamos declarar e construir um vetor de 8 inteiros
int valores[] = {0, 3, 0, 5, 7, 4, 0, 9};
Escreva um programa C para mover todos os zeros para o final do vetor, ou seja, para a direita, sem alterar a ordem dos elementos diferentes de zero já presentes no array e sem criar um vetor adicional ou temporário.

Sua saída deverá ser parecida com:

Vetor na ordem original:

0   3   0   5   7   4   0   9   

Vetor com os zeros deslocados para o final:

3   5   7   4   9   0   0   0
Resposta/Solução:

Veja a resolução comentada deste exercício usando C:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
  
int main(int argc, char *argv[]){
  // vamos declarar e construir um vetor de 8 inteiros
  int valores[] = {0, 3, 0, 5, 7, 4, 0, 9};
  int i; // para o controle do laço
  int j; // variável auxiliar
  int temp; // variável temporária
  
  setlocale(LC_ALL,""); // para acentos do português
		
  // vamos mostrar o vetor na ordem original
  printf("Vetor na ordem original:\n");
  for(i = 0; i < 8; i++){
    printf("%d   ", valores[i]);
  }
    
  // vamos inicializar j como 0 para que ele aponte para
  // o primeiro elemento do vetor
  j = 0;
    
  // agora o laço for percorre todos os elementos do vetor,
  // incrementanto a variável i e deixando o j em 0
  for(i = 0; i < 8; i++){
    // encontramos um valor que não é 0
    if(valores[i] != 0){
      // fazemos a troca entre os elementos nos índices
      // i e j
      temp = valores[i];
      valores[i] = valores[j];
      valores[j] = temp;
      // e avançamos o j para o elemento seguinte
      j++;
    }
  }
    
  // agora mostramos o resultado
  printf("\n\nVetor com os zeros deslocados para o final:\n");
  for(i = 0; i < 8; i++){
    printf("%d   ", valores[i]);
  }
    
  printf("\n\n");
  system("pause");
  return 0;
}

Não se esqueça: A resolução do exercício deve ser feita sem a criação de um vetor, array ou lista adicional, e os elementos diferentes de zero devem permanecer na mesma ordem que eles estavam antes.

Link para compartilhar na Internet ou com seus amigos:

C ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cateto adjascente dadas as medidas da hipotenusa e do cateto oposto em C

Quantidade de visualizações: 2319 vezes
Nesta dica mostrarei como podemos tirar proveito do Teorema de Pitágoras para obter a medida do cateto adjascente quando temos as medidas da hipotenusa e do cateto oposto. Este teorema diz que "o quadrado da hipotenusa é igual à soma dos quadrados dos catetos", o que torna a nossa tarefa, na linguagem C, muito fácil.

Comece observando a imagem a seguir:



Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. A medida da hipotenusa é, sem arredondamentos, 36.056 metros.

Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras):

\[c^2 = a^2 + b^2\]

Tudo que temos que fazer é mudar a fórmula para:

\[b^2 = c^2 - a^2\]

Veja que agora o quadrado do cateto adjascente é igual ao quadrado da hipotenusa menos o quadrado do cateto oposto. Não se esqueça de que a hipotenusa é o maior lado do triângulo retângulo.

Veja agora como esse cálculo é feito em linguagem C:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc, char *argv[]){
  float c = 36.056; // medida da hipotenusa
  float a = 20; // medida do cateto oposto
  
  // agora vamos calcular a medida da cateto adjascente
  float b = sqrt(pow(c, 2) - pow(a, 2));
 
  // e mostramos o resultado
  printf("A medida do cateto adjascente é: %f", b);
 
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

A medida do cateto adjascente é: 30.000586

Como podemos ver, o resultado retornado com o código C confere com os valores da imagem apresentada.


C ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções

Apostila C para iniciantes - Como escrever suas próprias funções em C

Quantidade de visualizações: 10840 vezes
As funções na linguagem C têm por objetivo dividir nossos programas em partes menores. Em vez de colocar todo o nosso código na função main() nós podemos criar nossas próprias funções e, desta forma, agrupar funcionalidades relacionadas.

Suponha que estejamos desenvolvendo um editor de texto em C. Poderíamos então ter funções que abrem o arquivo a ser exibido no editor, que salvam o arquivo, que verificam se houve alterações no texto, etc. E a maior vantagem disso é que conseguimos promover o reaproveitamento de código, uma vez que, diferente da função main(), as funções disponíveis na linguagem e aquelas que nós mesmos criamos podem ser chamadas mais de uma vez durante a execução do programa.

Então, já sabemos que uma função não é nada mais que um bloco de códigos situado fora da função main() e que pode ser chamado a partir da função main() ou de outras funções no programa. Sendo assim, vamos escrever nossa primeira função em C. Veja o código a seguir:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

// uma função que escreve uma frase
// na tela
void escrever(void){
  printf("Sou uma funcao");
}

int main(int argc, char *argv[]){
  // efetua uma chamada à função escrever
  escrever();

  puts("\n\n");
  system("PAUSE");
  return 0;
}

Neste programa nós temos uma função chamada escrever() que apenas escreve uma frase na tela. Note o uso de void para indicar que a função não retorna nada e não aceita nenhum argumento. Alguns compiladores (tais como Dev-C++) não exigem que coloquemos void para indicar a ausência de parâmetros na função. Assim, a função acima pode ser reescrita da seguinte forma:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

void escrever(){
  printf("Sou uma funcao");
}

Importante notar que, dentro do corpo de uma função, podemos inserir a quantidade de código que desejarmos. Isso é importante, uma vez que a tarefa realizada por uma função pode não ser tão simples quanto o exemplo que usamos até este ponto. Veja um programa que contém uma função personalizada mais elaborada. Note as duas chamadas a esta função a partir da função main():

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

// uma função que escreve uma frase
// na tela
void escrever(){
  char nome[] = "Osmar J. Silva";
  printf("Ola, meu nome e %s\n", nome);
}

int main(int argc, char *argv[]){
  printf("Sou main. Vou chamar a funcao escrever()\n");

  // efetua uma chamada à função escrever
  escrever();

  // efetua outra chamada à função escrever
  escrever();

  printf("Acabei de efetuar chamadas a funcao escrever()");

  puts("\n\n");
  system("PAUSE");
  return 0;
}

Funções podem receber argumentos e retornar valores. E quando isso acontece nós estamos realmente escrevendo funções úteis. Quando perceber que já aprendeu a escrever funções simples como as demonstradas nesta dica, volte sua atenção para as funções mais elaboradas que tratamos em outras dicas relacionadas.


C ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como testar se uma matriz é uma matriz identidade usando C

Quantidade de visualizações: 1747 vezes
Seja M uma matriz quadrada de ordem n. A matriz M é chamada de Matriz Identidade de ordem n (indicada por In) quando os elementos da diagonal principal são todos iguais a 1 e os elementos restantes são iguais a zero.

Para melhor entendimento, veja a imagem de uma matriz identidade de ordem 3, ou seja, três linhas e três colunas:



Veja um código C completo no qual nós declaramos uma matriz quadrada de ordem 3, pedimos para o usuário informar os valores de seus elementos e no final informamos se a matriz é uma matriz identidade ou não:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(int argc, char *argv[]){
  setlocale(LC_ALL,""); // para acentos do português

  int n = 3; // ordem da matriz quadrada
  int matriz[n][n]; // matriz quadrada
  int i, j, linha, coluna;
  int identidade = 1;

  // vamos pedir para o usuário informar os elementos da matriz
  for (i = 0; i < n; i++){
    for (j = 0; j < n; j++) {
      printf("Elemento na linha %d e coluna %d: ", (i + 1), (j + 1));
      scanf("%d", &matriz[i][j]);
    }
  }
    
  // agora verificamos se a matriz é uma matriz identidade
  for(linha = 0; linha < n; linha++){
    for(coluna = 0; coluna < n; coluna++){
      if(matriz[linha][coluna] != 1 && matriz[coluna][linha] != 0){
    	identidade = 0;
    	break;
      }
    }
  }
    
  // agora mostramos a matriz lida
  printf("\n");
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      printf("%d ", matriz[i][j]);
    }
    printf("\n");
  }

  if (identidade){
    printf("\nA matriz informada é uma matriz identidade.");
  }
  else{
    printf("\nA matriz informada não é uma matriz identidade.");
  }
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

Elemento na linha 1 e coluna 1: 1
Elemento na linha 1 e coluna 2: 0
Elemento na linha 1 e coluna 3: 0
Elemento na linha 2 e coluna 1: 0
Elemento na linha 2 e coluna 2: 1
Elemento na linha 2 e coluna 3: 0
Elemento na linha 3 e coluna 1: 0
Elemento na linha 3 e coluna 2: 0
Elemento na linha 3 e coluna 3: 1

1 0 0 
0 1 0 
0 0 1 

A matriz informada é uma matriz identidade.



C ::: Dicas & Truques ::: Strings e Caracteres

Como usar a função isdigit() do header ctype.h da linguagem C para verificar se um caractere é um dígito de 0 a 9

Quantidade de visualizações: 14530 vezes
Em algumas situações podemos precisar verificar se um dado caractere é um dígito (número) de 0 a 9. Isso pode ser feito com o auxílio da função isdigit() no header ctype.h. Esta função recebe um caractere e retorna um valor diferente de 0 se o caractere testado for um dígito de 0 a 9. Caso contrário o retorno é 0. Veja um exemplo completo de seu uso:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main(int argc, char *argv[]){
  char caractere;

  // vamos ler o caractere informado pelo usuário
  printf("Informe um caractere e tecle ENTER: ");
  scanf("%c", &caractere);

  // vamos verificar se o usuário informou um dígito
  // de 0 a 9
  if(isdigit(caractere))
    printf("Voce informou um digito de 0 a 9");
  else
    printf("Voce NAO informou um digito de 0 a 9");

  puts("\n\n");
  system("PAUSE");
  return 0;
}



C ::: Dicas & Truques ::: Recursão (Recursividade)

Como escrever uma função recursiva para calcular a potência de um número usando a linguagem C

Quantidade de visualizações: 47997 vezes
Chamamos de potenciação a operação de se elevar um número (uma base) a um determinado expoente e obter sua potência. Veja a figura a seguir:



Veja que aqui o valor 5 foi elevado ao cubo, ou seja, ao expoente 3 e obtemos como resultado sua potência: 125.

O código abaixo mostra como você pode escrever uma função recursiva em C que permite calcular a potência de um número inteiro:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
 
// função recursiva que calcula a potência  de
// um inteiro
int potencia(int base, int expoente)
{
  if(expoente == 0){
    return 1;
  }
  else{
    return base * potencia(base, expoente - 1);
  }
}
 
int main(int argc, char *argv[])
{
  int base = 3;
  int expoente = 4;
 
  printf("%d elevado a %d = %d", base, expoente,
    potencia(base, expoente));
 
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

3 elevado a 4 = 81


C ::: Desafios e Lista de Exercícios Resolvidos ::: Razão e Proporção

Exercícios Resolvidos de C - Como resolver problemas de razão e proporção em C - Em uma empresa, a razão entre o número de mulheres e o número

Quantidade de visualizações: 471 vezes
Pergunta/Tarefa:

Em uma empresa, a razão entre o número de mulheres e o número de homens é de 3/5. Sabendo que há 30 homens nessa empresa, então o número de mulheres é:

A) 18
B) 20
C) 22
D) 24
E) 27

Antes de tentarmos resolver esse problema em C, vamos relembrar o que são razão e proporção. Os conceitos de razão e proporção estão ligados ao quociente. A razão é o quociente de dois números, e a proporção é a igualdade entre duas razões.

No exercício acima, o valor de 30 homens está fixo, mas seu programa C deverá pedir para o usuário informar a quantidade de homens. Isso vai permitir aplicar o algoritmo em situações diferentes da exposta aqui.

Sua saída deve ser parecida com:

Informe a quantidade de homens: 30
A quantidade de homens é: 30
A quantidade de mulheres é: 18.0
Resposta/Solução:

Veja a resolução comentada deste exercício usando C:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  float dividendo = 3.0;
  float divisor = 5.0;
  int quant_homens;
  float quant_mulheres;
    
  // vamos ler a quantidade de homens
  printf("Informe a quantidade de homens: ");
  scanf("%d", &quant_homens);
  printf("A quantidade de homens é: %d", quant_homens);
    
  // agora fazemos a multiplicação cruzada
  quant_mulheres = (quant_homens * dividendo);
  // e dividimos pelo divisor
  quant_mulheres = quant_mulheres / divisor;
    
  // e mostramos o resultado
  printf("\nA quantidade de mulheres é: %f", quant_mulheres);
  
  printf("\n\n");
  system("PAUSE");
  return 0;
}



C ::: Estruturas de Dados ::: Lista Ligada Simples

Estruturas de Dados em C - Como remover um nó no final de uma lista ligada simples em C - Listas encadeadas em C

Quantidade de visualizações: 1950 vezes
Nesta dica mostraremos como é possível excluir o nó no fim (o último nó) de uma lista encadeada simples (singly linked list) em C. Veja a função:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

// função que permite remover um nó no fim
// da lista, ou seja, o último nó da lista.
// A função retorna um ponteiro para o início da lista
struct No *remover_final(struct No *inicio){
  struct No *n; // nó que será removido
  
  // nó que antecede o nó a ser removido. Isso
  // faz sentido, já que ele será o último nó
  // agora
  struct No *anterior;
  n = inicio; // aponta para o início da lista
  
  // varremos os nós da lista e paramos um nó antes do
  // nó a ser excluído
  while(n->proximo != NULL){
    anterior = n; // anterior assume o lugar de n
    n = n->proximo; // e n assume o seu próximo  
  }
  
  // anterior passa a ser o último nó agora
  anterior->proximo = NULL;
  
  // mostra o nó removido
  printf("\nNo removido: %d\n", n->valor);
  
  free(n); // libera o nó que antes era o último
  
  return inicio;
} 

Note que a função recebe um ponteiro para o início da lista e retorna também um ponteiro para o início da lista. Tenha o cuidado de verificar se a lista não está vazia antes de tentar fazer a exclusão. No exemplo eu fiz isso na função main(). Veja a listagem completa abaixo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
 
// estrutura Nó
struct No{
  int valor;
  struct No *proximo;
};
// fim da estrutura Nó
 
// função que permite exibir os valores de
// todos os nós da lista
void exibir(struct No *n){
  if(n != NULL){
    do{
      printf("%d\n", n->valor);
      n = n->proximo;
    }while(n != NULL);
  }
  else
    printf("A lista esta vazia\n\n");
}
 
// função que permite remover um nó no fim
// da lista, ou seja, o último nó da lista.
// A função retorna um ponteiro para o início da lista
struct No *remover_final(struct No *inicio){
  struct No *n; // nó que será removido
  
  // nó que antecede o nó a ser removido. Isso
  // faz sentido, já que ele será o último nó
  // agora
  struct No *anterior;
  n = inicio; // aponta para o início da lista
  
  // varremos os nós da lista e paramos um nó antes do
  // nó a ser excluído
  while(n->proximo != NULL){
    anterior = n; // anterior assume o lugar de n
    n = n->proximo; // e n assume o seu próximo  
  }
  
  // anterior passa a ser o último nó agora
  anterior->proximo = NULL;
  
  // mostra o nó removido
  printf("\nNo removido: %d\n", n->valor);
  
  free(n); // libera o nó que antes era o último
  
  return inicio;
} 
 
// função que permite inserir nós no
// final da lista.
// veja que a função recebe o valor a ser
// armazenado em cada nó e um ponteiro para o
// início da lista. A função retorna um
// ponteiro para o início da lista
struct No *inserir_final(struct No *n, int v){
  // reserva memória para o novo nó
  struct No *novo = (struct No*)malloc(sizeof(struct No));
  novo->valor = v;
 
  // verifica se a lista está vazia
  if(n == NULL){
    // é o primeiro nó...não deve apontar para
    // lugar nenhum
    novo->proximo = NULL;
    return novo; // vamos retornar o novo nó como sendo o início da lista
  }
  else{ // não está vazia....vamos inserir o nó no final
    // o primeiro passo é chegarmos ao final da lista
    struct No *temp = n; // vamos obter uma referência ao primeiro nó
    // vamos varrer a lista até chegarmos ao último nó
    while(temp->proximo != NULL){
      temp = temp->proximo;
    }
    // na saída do laço temp aponta para o último nó da lista
   
    // novo será o último nó da lista...o campo próximo dele deve
    // apontar para NULL
    novo->proximo = NULL;
    // vamos fazer o último nó apontar para o nó recém-criado
    temp->proximo = novo;
    return n; // vamos retornar o início da lista intacto
  }
}
 
int main(int argc, char *argv[])
{
  // declara a lista
  struct No *inicio = NULL;
 
  // vamos inserir quatro valores no final
  // da lista
  inicio = inserir_final(inicio, 45);
  inicio = inserir_final(inicio, 3);
  inicio = inserir_final(inicio, 98);
  inicio = inserir_final(inicio, 47);
 
  // vamos exibir o resultado
  printf("Valores presentes na lista ligada antes da remocao:\n");
  exibir(inicio);
 
  // vamos remover o nó no fim da lista
  if(inicio != NULL){
    inicio = remover_final(inicio);
  }
  
  // vamos exibir o resultado
  printf("\nValores presentes na lista ligada apos a remocao:\n");
  exibir(inicio);
  
  system("pause");
  return 0;
}

Ao executar esse código você terá o seguinte resultado:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

Valores presentes na lista ligada antes da remocao:
45
3
98
47

No removido: 47

Valores presentes na lista ligada apos a remocao:
45
3
98

Pressione qualquer tecla para continuar. . .



C ::: Dicas & Truques ::: Strings e Caracteres

Como escrever uma função strtolower() para transformar uma palavra inteira em letras minúsculas usando a linguagem C

Quantidade de visualizações: 9908 vezes
O C padrão não possui uma função para transformar todas as letras de uma palavra em minúsculas, embora alguns compiladores a forneça.

O que temos é a função:

    
int tolower(int c);


que permite transformar um caractere em seu correspondente minúsculo. Podemos tirar vantagem disso e escrever uma função strtolower() personalizada. Veja a listagem logo abaixo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------
 
#include <stdio.h>
#include <stdlib.h>
 
void strtolower(char *string){
  while(*string){
    *string = tolower(*string);
    string++;
  }
}
 
int main(int argc, char *argv[])
{
  char frase[] = "PROGRAMANDO EM C";
  strtolower(frase);
   
  printf("%s\n\n", frase);
   
  system("PAUSE");  
  return 0;
}

Ao executar este código nós teremos o seguinte resultado:

programando em c
Pressione qualquer tecla para continuar...


Vamos testar seus conhecimentos em

Tintas

Sabe-se que a tinta empregada em áreas molhadas geralmente é um tipo projetado para ser resistente à umidade e à exposição constante à água. Essas tintas são usadas em superfícies que estão sujeitas a respingos de água, condensação, umidade ambiente ou imersão direta em água, como banheiros, cozinhas, áreas de piscina, lavanderias e outros ambientes úmidos.

Desse modo, assinale a alternativa que indica a tinta adequada para esses ambientes e suas respectivas características.

A) Tinta acrílica - é à base de água e tem propriedades versáteis. As tintas acrílicas secam rapidamente, são duráveis e podem ser limpas com água antes de secar.

B) Tinta epóxi - é conhecida por sua excepcional resistência química e física. As tintas epóxi são formuladas com uma base de resina epóxi, o que as torna extremamente duráveis, resistentes à umidade e ao desgaste.

C) Tinta texturizada - é formulada para criar superfícies com texturas visíveis ou táteis após a aplicação. As tintas texturizadas podem ser usadas para adicionar profundidade e interesse visual a paredes e a outras superfícies.

D) Tinta esmalte - é uma tinta feita geralmente à base de óleo ou solvente (também pode ser à base de água) que cria uma superfície dura, brilhante e durável quando seca.

E) Verniz - é aplicado sobre superfícies pintadas ou de madeira para conferir proteção e acabamento. Ele cria uma camada transparente ou semitransparente que preserva e embeleza a superfície subjacente.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Responsabilidade civil no código de defesa do consumidor

Um consumidor contrata um eletricista para consertar falhas na instalação elétrica de sua casa. Depois de alguns dias de trabalho e o serviço finalizado, o consumidor percebe que o problema não foi solucionado. Nessa situação, podemos perceber que:

A) está presente o fato do serviço ou defeito.

B) está presente o fato do serviço, mas também há vício do serviço.

C) ocorreu vício do serviço.

D) há vício do produto.

E) ocorreu fato do produto ou defeito.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Vidros

Qual dos tipos abaixo não é um vidro:

A) Soda-cálcico.

B) Boro-silicato.

C) Ao chumbo.

D) Quartzitos.

E) Alumínio borosilicato.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fundações

Sondagem à Percussão (SPT) e Rotativa (RQD)

Na sondagem SPT, o que significa o N30?

A) Corresponde ao número de golpes dos últimos 30cm na fase de amostragem.

B) Corresponde à energia de 30% a ser considerada.

C) Corresponde a 30 golpes para penetrar um metro.

D) Corresponde ao número de golpes dos primeiros 30cm do amostrador.

E) Corresponde à energia que causa a perfuração dinâmica de 30cm com uma única pancada.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual a saída do seguinte programa Python?

valor = 0.0043563
print("Valor: %e" % valor)

A) Erro de execução na linha 2

B) Valor: 0.004356

C) Valor: 4.356300e-03

D) Valor: 0

E) Valor: 0.0044
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 25 usuários muito felizes estudando em nosso site.