Ir ao conteúdo

Loris_mini

Membro Pleno
  • Posts

    52
  • Cadastrado em

  • Última visita

Reputação

7
  1. Fiz esse código em resposta a essa questão: A gerente do cabeleireiro Sempre Bela tem uma tabela em que registra os “pés”, as “mãos” e o serviço de podologia das cinco manicures. Sabendo-se que cada uma ganha 50% do que faturou ao mês, criar um algoritmo que possa calcular e imprimir quanto cada um vai receber, uma vez que não têm carteiras assinadas; os valores, respectivamente, são R$ 10,00; R$ 15,00 e R$ 30,00. #include <stdio.h> #include <stdlib.h> void main() { int manicure=0, servico; int servicos[5][3], i, j, soma; //zerando a tabela de servicos for (i=0; i<5; i++) { for (j=0; j<3; j++) servicos[i][j]=0; //fazendo a leitura dos servicos do { printf("Informe a manicure <1-5>:\n"); scanf("%d", &manicure); printf("Informe o servico <1-pe 2-mao 3-podologia>:\n"); scanf("%d", &servico); if (manicure >= 1 && manicure <=5) { if (servico >= 1 && servico <= 3) servicos[manicure-1][servico-1]++; else printf("Servico invalido!\n"); } else printf("Manicure invalida!\n"); } while (manicure != 0); //calculando e imprimindo o faturamento printf("\nFaturamento das manicures:\n"); for (i=0; i<5; i++) { soma = servicos[i][0] * 10; soma += servicos[i][1] * 15; soma += servicos[i][2] * 30; printf("\nManicure %d: %d\n", i+1, soma); } } Mas gostaria de saber como eu faria essa mesma questão utilizando PONTEIROS e ALOCAÇÃO DINÂMICA DE MEMÓRIA.
  2. @devair1010 Depois que coloquei o & rodou sim. Mas nao sei uma explicação obvia para esse código. Qual seria?
  3. Alguem poderia me ajudar a ver se tem algum erro nesse código, e o que ele imprimi? #include <stdio.h> int main() { int a, b, c; int *ptr1, *ptr2; a = 12; ptr1 = &c; ptr2 = b; c = 5; *ptr2 = (*ptr1 + c) % a; printf("a = %d\n", a); printf("b = %d\n", b); printf("c = %d\n", c); return 0; } o erro eu achei que seria aqui. Esta faltando o & ficaria ptr2 = &b; No caso esse código esta imprimindo os valores de a, b e c ?
  4. @devair1010 Com isso eu não entendi direito o que ele roda afinal. Qual a explicação pro que ele roda?
  5. @vangodp Nossa, não entendi;
  6. Não consigo entender o que será impresso pelo programa abaixo: #include <stdio.h> int main() { int a, b, c; int *ptr1, *ptr2; a = 9; ptr1 = &a; ptr2 = &b; c = 7; *ptr2 = *ptr1 + c; printf("a = %d\n", a); printf("b = %d\n", b); printf("c = %d\n", c); ptr1 = ptr2; *ptr1 = 2; ptr2 = &c; b = a + *ptr1; printf("a = %d\n", a); printf("b = %d\n", b); printf("c = %d\n", c); return 0; Coloquei ele pra rodar e o programa rodou isso: Com isso eu não entendi direito o que ele roda afinal. Qual a explicação pra esse código?
  7. @devair1010 a duvida era em relação a impressão mesmo. Mas era o que eu imaginei mesmo e valeu por complementar a resposta.
  8. Estou com dúvidas nesse código. Ele imprimi uma sequencia de numeros e depois inverte eles? #include <stdio.h> int main() { int i; int* ptr; int lista[] = {1, 3, 5, 8, 10, 16}; ptr = lista; for(i = 0; i < 6; ++i) { printf("%d\n", *ptr); ptr++; } printf("\n\n"); ptr--; for(i = 0; i < 6; ++i) { printf("%d\n", *ptr); ptr--; } return 0; }
  9. @devair1010 Essa linha.
  10. Estou com dúvida em uma linha de um código que não consigo decifrar o que ele faz. Alguem pode me ajudar? void exibir_invertido(char nome[])//Função que inverte a string/ { if (nome[0] != '\0')//Se a string na posição 0 for diferente de 0/ { exibir_invertido(&nome[1]); printf("%c", nome[0]); //Exibe na tela a string na posição 0/ } } int main() //Programa Princial/ { char nome[30]; //Declaração de uma variável do tipo caracter de tamanho 30/ printf("Digite o nome: "); //Pede ao usuário que digite o nome/ scanf("%s", nome); //captura do teclado a resposta do usuário e armazena na variável nome/ exibir_invertido(nome); //Chama a função que exibe a string invertida/ printf("\n"); //Pula uma linha/ return 0; //Retorna 0/ } estou com dificuldade nessa linha
  11. @devair1010 Valeu pelas Dicas. Me ajudou bastante!
  12. @devair1010 Consegui fazer isso. Poderia me ajudar para ver se é isso mesmo? Ou se tem algo divergente? #include <stdio.h> int calcular_nota_final(int notas[][3], int quant_alunos, int indice_linha)/Funçao que calcula a nota final, recebe como parâmetros a quantidade de alunos e a variável índice_linha/ { int total = 0;/Declaração da variável total e inicialização dela com 0/ if (indice_linha >= 0 && indice_linha < quant_alunos)/Condição: Se a variável indice_linha for maior ou igual a 0 r menor do que a quantidade de alunos/ { int i;/Declaração da variável i, do tipo inteiro/ for (i = 0; i < 3; i++)/Laço: i começa em 0 e enquanto for menor que 3/ { total += notas[indice_linha][i];/A variável total recebe a soma das notas/ } } return total;/Retorna-se total/ } int indice_menor_nota(int notas[][3], int quant_alunos, int indice_coluna)/Função que procura a menor nota/ { int indice = 0, menor_nota, i;/Declaração de variáveis/ if (indice_coluna >= 0 && indice_coluna < 3)/Condição: se a variável indice_coluna for maior ou igual a 0 e menor do que 3/ { menor_nota = notas[0][indice_coluna];/A variável menor_nota recebe a menor nota/ for (i = 1; i < quant_alunos; i++)/Laço: i começa em 1, enquanto for menor do que a quantidade de alunos/ { if (notas[i][indice_coluna] < menor_nota)/Condição: se a nota na linha i for menor do que a menor nota até então/ { menor_nota = notas[i][indice_coluna];/Atualiza a menor nota/ indice = i;/Atualiza o índice/ } } } return indice;/Retorna-se o índice/ } void imprimir_alunos_com_media(char nomes[][30], int notas[][3], int quant_alunos, int media)/Função que imprime o nome dos alunos que obtiveram média/ { int i, nota_final;/Declaração de variáveis/ printf("\nAlunos que obtiveram media acima de %d\n", media);/Exibe na tela os alunos que obtiveram nota acima da média/ for (i = 0; i < quant_alunos; i++)/Laço: i começa em 0 e enquanto for menor do que a quantidade de alunos/ { nota_final = calcular_nota_final(notas, quant_alunos, i);/nota final recebe o retorno da função que calcula as notas finais/ if (nota_final > media)/Condição: se a nota final for maior do que a média/ { printf("%s - %d pontos\n", nomes[i], nota_final);/Exibe na tela o nome do aluno e a nota/ } } printf("\n");/Pula uma linha/ } int indice_maior_nota(int notas[][3], int quant_alunos)/Verifica o índice da maior nota/ { int i, tmp;/Declaração de variáveis/ int maior_nota = calcular_nota_final(notas, quant_alunos, 0);/*A variável maior_nota recebe o retorno da função calcular_nota_final */ int indice_maior_nota = 0;/*Declaração da variável indice_maior_nota e inicialização dela com 0 */ for (i = 1; i < quant_alunos; i++)/Laço: i começa em 1 e enquanto for menor que a quantidade de alunos/ { tmp = calcular_nota_final(notas, quant_alunos, i);/*A variável tmp recebe o retorno da função calcular_nota_final, considerando os parâmetros passados */ if (tmp > maior_nota)/Condição: se tmp for maior do que a maior nota/ { maior_nota = tmp;/A maior nota é atualizada/ indice_maior_nota = i;/Atualiza-se o índice da maior nota/ } } return indice_maior_nota;/Retorna-se o índice da maior nota/ } int main()/Programa Principal/ { int n;/Declaração da variável n/ printf("Informe a quantidade de alunos: ");/*Pede ao usuário que informe a quantidade de alunos */ scanf("%d", &n);/Captura a resposta do aluno do teclado/ int notas[n][3], i, j, k;/Declaração de variáveis/ char nomes[n][30];/Declaração da matriz de nomes/ for (i = 0; i < n; i++)/Laço: i começa em 0 e enquanto for menor do que n/ { printf("Informe o nome do aluno[%d]: ", i);/Pede ao usuário que informe o nome do aluno/ scanf("%s", nomes[i]);/Captura a resposta do usuári e armazena na variável nome, na posição i/ for (j = 0; j < 3; j++)/Laço: j começa em 0 e enquanto for menor do que 3/ { printf("Informe a nota da prova %d do aluno[%d]: ", j + 1, i);/Pede ao usuário que informe a nota da prova do aluno/ scanf("%d", &notas[i][j]);/Captura a resposta do usuário e a armazena na matriz de notas/ } } imprimir_alunos_com_media(nomes, notas, n, 80);/Chama a função que imprime o nome dos alunos com média acima de 80/ printf("Menor nota em cada prova\n");/Imprime na tela:Menor nota em cada prova/ for (i = 0; i < 3; i++)/Laço: i começa em 0 e enquanto for menor do que 3/ { k = indice_menor_nota(notas, n, i);/A variável k recebe o retorno da função indice_menor_nota, de acordo com os parâmetros passados/ printf("Menor nota prova %d: %s - %d pontos\n", i + 1, nomes[k], notas[k][i]);/Exibe na tela A menor nota em determinada prova e o nome do aluno/ } printf("\n");/Pula uma linha/ k = indice_maior_nota(notas, n);/A variável k recebe o retorno da função indice_maior_nota/ printf("Maior nota do curso: %s - %d pontos\n", nomes[k], calcular_nota_final(notas, n, k));/Exibe-se na tela a maior nota do curso e o nome do aluno de acordo com a função calcular_nota_final/ return 0;/Retorna-se 0/ }
  13. Consegui fazer isso: Mas nao sei se ta certo! #include <stdio.h> #define N 5 void preencher_matriz(int mat[][N])/Função que preenche a matriz/ { int i, j;/Declaração das variáveis i e j/ for (i = 0; i < N; i++)/*Laço encaixado: i começa em 0, enquanto ele for menor que N */ { for (j = 0; j < N; j++)/j começa em 0, enquanto for menor que N/ { printf("Informe o valor de matriz[%d][%d]: ", i, j);/Pede ao usuário que digite o valor da matriz,na posição ij./ scanf("%d", &mat[i][j]);/Captura do teclado a resposta do usuário/ } } } int somar_linha(int mat[][N], int linha)/Declaração da função que soma as linhas da matriz/ { if (linha >= 0 && linha < N) // verifica se a linha é válida, se a linha for maior ou igual a 0 e menor que N { int coluna, total = 0;/Declaração das variáveis coluna e total e inicialização delas com 0/ for (coluna = 0; coluna < N; coluna++)/Laço: coluna começa em 0, enquanto ela for menor que N o programa percorre a matriz/ { total += mat[linha][coluna];/Total recebe a soma dos valores das linas da matriz/ } return total;/Retorna-se total/ } else // caso contrário retorna 0 { return 0; } } int somar_coluna(int mat[][N], int coluna)/Declaração da função que soma as colunas da matriz/ { if (coluna >= 0 && coluna < N) // verifica se a coluna é válida, se a coluna for maior ou igual a 0 e menor que N { int linha, total = 0;/Declaração das variáveis linha e total e inicialização delas com 0/ for (linha = 0; linha < N; linha++)/Laço: linha começa em 0, enquanto ela for menor que N o programa percorre a matriz/ { total += mat[linha][coluna];/Total recebe a soma dos valores das colunas da matriz/ } return total;/Retorna-se o valor da variável total/ } else // caso contrário retorna 0 { return 0; } } int indice_menor_valor(int vet[])/Função que procura o menor valor/ { int i, menor_valor = vet[0], menor_indice = 0;/*declaração de variáveis e inicialização delas */ for (i = 1; i < N; i++)/Laço: i começa em 1 e enquanto for menor que N o programa roda/ { if (vet[i] < menor_valor)/Se o vetor na posição i for menor que a variável menor_valor/ { menor_valor = vet[i];/A variável menor_valor recebe o vetor na posção i,ou seja ela é atualizada/ menor_indice = i;/Atualiza o menor índice até então/ } } return menor_indice;/Retorna-se o menor índice/ } int indice_maior_valor(int vet[])/Função que busca o maior valor/ { int i, maior_valor = vet[0], maior_indice = 0;/*Declaração de variáveis e inicialização delas */ for (i = 1; i < N; i++)/Laço:i começa em 1 e enquanto for menor que N o programa roda/ { if (vet[i] > maior_valor)/Se o vetor na posição i for maior que a variável maior_valor/ { maior_valor = vet[i];/A variável maior_valor recebe o vetor na posção i,ou seja ela é atualizada/ maior_indice = i;/Atualiza o maior índice até então/ } } return maior_indice;/Retorna-se o maior índice/ } int main()/Programa Principal/ { int mat[N][N], soma_linhas[N], soma_colunas[N];/Declaração de variáveis/ int i;/Declaração da variável i/ preencher_matriz(mat);/Chama a função que preenche a matriz/ for (i = 0; i < N; i++)/Laço: i começa em 0, enquanto i for menor que N/ { soma_linhas[i] = somar_linha(mat, i);/A variável soma_linhas recebe o que a função somar_linha retornar, considerando os parâmetros passados/ soma_colunas[i] = somar_coluna(mat, i);/A variável soma_colunas recebe o que a função somar_coluna retornar, considerando os parâmetros passados/ } printf("Linha com menor soma: %d\n", indice_menor_valor(soma_linhas));/Exibe na tela a linha com menor soma/ printf("Coluna com maior soma: %d\n", indice_maior_valor(soma_colunas));/Exibe na tela a coluna com maior soma/ return 0;/Retorna 0/ } #include <stdio.h> #define N 5 void preencher_matriz(int mat[][N])/Função que preenche a matriz/ { int i, j;/Declaração das variáveis i e j/ for (i = 0; i < N; i++)/*Laço encaixado: i começa em 0, enquanto ele for menor que N */ { for (j = 0; j < N; j++)/j começa em 0, enquanto for menor que N/ { printf("Informe o valor de matriz[%d][%d]: ", i, j);/Pede ao usuário que digite o valor da matriz,na posição ij./ scanf("%d", &mat[i][j]);/Captura do teclado a resposta do usuário/ } } } int somar_linha(int mat[][N], int linha)/Declaração da função que soma as linhas da matriz/ { if (linha >= 0 && linha < N) // verifica se a linha é válida, se a linha for maior ou igual a 0 e menor que N { int coluna, total = 0;/Declaração das variáveis coluna e total e inicialização delas com 0/ for (coluna = 0; coluna < N; coluna++)/Laço: coluna começa em 0, enquanto ela for menor que N o programa percorre a matriz/ { total += mat[linha][coluna];/Total recebe a soma dos valores das linas da matriz/ } return total;/Retorna-se total/ } else // caso contrário retorna 0 { return 0; } } int somar_coluna(int mat[][N], int coluna)/Declaração da função que soma as colunas da matriz/ { if (coluna >= 0 && coluna < N) // verifica se a coluna é válida, se a coluna for maior ou igual a 0 e menor que N { int linha, total = 0;/Declaração das variáveis linha e total e inicialização delas com 0/ for (linha = 0; linha < N; linha++)/Laço: linha começa em 0, enquanto ela for menor que N o programa percorre a matriz/ { total += mat[linha][coluna];/Total recebe a soma dos valores das colunas da matriz/ } return total;/Retorna-se o valor da variável total/ } else // caso contrário retorna 0 { return 0; } } int indice_menor_valor(int vet[])/Função que procura o menor valor/ { int i, menor_valor = vet[0], menor_indice = 0;/*declaração de variáveis e inicialização delas */ for (i = 1; i < N; i++)/Laço: i começa em 1 e enquanto for menor que N o programa roda/ { if (vet[i] < menor_valor)/Se o vetor na posição i for menor que a variável menor_valor/ { menor_valor = vet[i];/A variável menor_valor recebe o vetor na posção i,ou seja ela é atualizada/ menor_indice = i;/Atualiza o menor índice até então/ } } return menor_indice;/Retorna-se o menor índice/ } int indice_maior_valor(int vet[])/Função que busca o maior valor/ { int i, maior_valor = vet[0], maior_indice = 0;/*Declaração de variáveis e inicialização delas */ for (i = 1; i < N; i++)/Laço:i começa em 1 e enquanto for menor que N o programa roda/ { if (vet[i] > maior_valor)/Se o vetor na posição i for maior que a variável maior_valor/ { maior_valor = vet[i];/A variável maior_valor recebe o vetor na posção i,ou seja ela é atualizada/ maior_indice = i;/Atualiza o maior índice até então/ } } return maior_indice;/Retorna-se o maior índice/ } int main()/Programa Principal/ { int mat[N][N], soma_linhas[N], soma_colunas[N];/Declaração de variáveis/ int i;/Declaração da variável i/ preencher_matriz(mat);/Chama a função que preenche a matriz/ for (i = 0; i < N; i++)/Laço: i começa em 0, enquanto i for menor que N/ { soma_linhas[i] = somar_linha(mat, i);/A variável soma_linhas recebe o que a função somar_linha retornar, considerando os parâmetros passados/ soma_colunas[i] = somar_coluna(mat, i);/A variável soma_colunas recebe o que a função somar_coluna retornar, considerando os parâmetros passados/ } printf("Linha com menor soma: %d\n", indice_menor_valor(soma_linhas));/Exibe na tela a linha com menor soma/ printf("Coluna com maior soma: %d\n", indice_maior_valor(soma_colunas));/Exibe na tela a coluna com maior soma/ return 0;/Retorna 0/ }
  14. @mauro_b Consegui fazez isso : void exibir_invertido(char nome[])/Função que inverte a string/ { if (nome[0] != '\0')/Se a string na posição 0 for diferente de 0/ { exibir_invertido(&nome[1]);/**/ printf("%c", nome[0]); /Exibe na tela a string na posição 0/ } } int main() /Programa Princial/ { char nome[30]; /Declaração de uma variável do tipo caracter de tamanho 30/ printf("Digite o nome: "); /Pede ao usuário que digite o nome/ scanf("%s", nome); /captura do teclado a resposta do usuário e armazena na variável nome/ exibir_invertido(nome); /Chama a função que exibe a string invertida/ printf("\n"); /Pula uma linha/ return 0; /Retorna 0/ } so nao consegui esssa parte
  15. Preciso de ajuda para comentar cada linha desse código. Tentar me explicar o que cada parte faz, suas funções, etc. #include <stdio.h> int calcular_nota_final(int notas[][3], int quant_alunos, int indice_linha) { int total = 0; if (indice_linha >= 0 && indice_linha < quant_alunos) { int i; for (i = 0; i < 3; i++) { total += notas[indice_linha][i]; } } return total; } int indice_menor_nota(int notas[][3], int quant_alunos, int indice_coluna) { int indice = 0, menor_nota, i; if (indice_coluna >= 0 && indice_coluna < 3) { menor_nota = notas[0][indice_coluna]; for (i = 1; i < quant_alunos; i++) { if (notas[i][indice_coluna] < menor_nota) { menor_nota = notas[i][indice_coluna]; indice = i; } } } return indice; } void imprimir_alunos_com_media(char nomes[][30], int notas[][3], int quant_alunos, int media) { int i, nota_final; printf("\nAlunos que obtiveram media acima de %d\n", media); for (i = 0; i < quant_alunos; i++) { nota_final = calcular_nota_final(notas, quant_alunos, i); if (nota_final > media) { printf("%s - %d pontos\n", nomes[i], nota_final); } } printf("\n"); } int indice_maior_nota(int notas[][3], int quant_alunos) { int i, tmp; int maior_nota = calcular_nota_final(notas, quant_alunos, 0); int indice_maior_nota = 0; for (i = 1; i < quant_alunos; i++) { tmp = calcular_nota_final(notas, quant_alunos, i); if (tmp > maior_nota) { maior_nota = tmp; indice_maior_nota = i; } } return indice_maior_nota; } int main() { int n; printf("Informe a quantidade de alunos: "); scanf("%d", &n); int notas[n][3], i, j, k; char nomes[n][30]; for (i = 0; i < n; i++) { printf("Informe o nome do aluno[%d]: ", i); scanf("%s", nomes[i]); for (j = 0; j < 3; j++) { printf("Informe a nota da prova %d do aluno[%d]: ", j + 1, i); scanf("%d", &notas[i][j]); } } imprimir_alunos_com_media(nomes, notas, n, 80); printf("Menor nota em cada prova\n"); for (i = 0; i < 3; i++) { k = indice_menor_nota(notas, n, i); printf("Menor nota prova %d: %s - %d pontos\n", i + 1, nomes[k], notas[k][i]); } printf("\n"); k = indice_maior_nota(notas, n); printf("Maior nota do curso: %s - %d pontos\n", nomes[k], calcular_nota_final(notas, n, k)); return 0; }

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!