Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

WagCez

[Resolvido] Exercícios de Programação Linguagem C

Recommended Posts

pessoal

meu professor da facul passou 10 exercicios pra cada um da minha turma resolver valendo 2 pontos e como estou precisando muito, estou implorando ajuda de vcs

eu jah consegui resolver 6 e faltam apenas 4 (dãããã)

desses quatro um to quase terminando e outro pelo menos comecei

os outros dois nem sei como começar

aew estão eles:

Ah! Eu uso o Dev C++ e é em Linguagem C (normal msm), as respostas tem que ser rodadas nele

 

1ª Questão (esse jah comecei mas não consigo terminar)

Faça um algoritmo para calcular a distribuição de freqüência de 15 valores

sorteados de 0 a 9.

Suponha os seguintes números sorteados: 4,5,7,8,9,1,8,2,4,3,2,5,6,7,0

Saída do programa:

Número 0: 1 vez

Número 1: 1 vez

Numero 2: 2 vezes

Número 3: 1 vez

Número 4: 2 vezes

Número 5: 2 vezes

Número 6: 1 vez

Número 7: 2 vezes

Numero 8: 2 vezes

Número 9: 1 vez

 

 

 

2ªQuestão(esse to quase acabando, mas tem um pequeno detalhe que nao sei qual eh, q não me deixa terminar)

Elabore um algoritmo que calcule um número inteiro que mais se aproxima da raiz

quadrada de um número fornecido pelo usuário.( nesse exercicio quer um valor inteiro aproximado da raiz de um numero decimal, soh que quando faço, ele arredonda pra mais ou pra menos(por exemplo se a raiz foi 2.2 o resultado final era pra ser 2 e se fosse 2.9 era pra ser 3, soh que quando eu faço para esses dois resultados ou a resposta é 2 ou 3 pors dois numeros(nesse eu usei floor e ceil)))

 

3ª questão (tenho ideia de como fazer, só não sei fazer)

Faça um algoritmo que dadas duas matrizes A(10x4) e B(4x3), calcule a matriz C,

onde C=A*B.

 

4ª questão(nem faço ideia, soh sei que é registro)

Para controle dos veículos em uma determinada cidade, a Secretaria de Transportes

criou o seguinte registro:

- Nome do Proprietário

- Número do Chassi

- Modelo do veículo

- Marca

- Cor

- Combustível

- Ano de Fabricação

- Placa

Sabendo que o número máximo de veículos na cidade é 5000, e suponha que os

veículos já foram todos cadastrados (5000 veículos).

a) Construa um algoritmo que liste todos os proprietários cujos carros são do ano

de 1990 ou inferior, e movidos a gasolina.

b ) Escreva um algoritmo que liste todas as placas e os proprietários dos veículos

que comecem com a letra 'A' e terminem com '0', '2' ou '7'. DICA: faça com que a

placa seja um vetor de caracteres!

c) Elabore um algoritmo que liste o modelo e a cor do automóvel cuja soma dos

caracteres numéricos da placa seja par. DICA: use uma função char2int() -

character-to-integer – para converter um caracter numérico em um número.

Exemplo: CARACTER c

INTEIRO i

c ← '2'; //suponha que c recebe o caracter '2'

i ← char2int©; // agora, isso é o mesmo que i = 2

i ← char2int('3'); //agora, isso é o mesmo que i = 3

d) Permita a troca do nome do proprietário do veículo informando-se o número do

chassi do carro.

 

 

 

 

 

 

 

 

 

 

 

 

E não é preguiça e nem falta de vontade, soh estou desesperado porq não consigo fazer

mas enquanto isso, vou tentar resolver aki

Abraços e agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imagino que seja a pessoa que me enviou o e-mail hoje..

 

Fico feliz que tenha se interessado em procurar ajuda numa comunidade tão grande e de tamanha qualidade como o imaster.

 

 

Infelizmente você, aparentemente, não leu as regras do fórum, e por isso errou o título do tópico,onde é proibido constar palavras como

dúvida.

 

Como disse que já havia começado alguns exercícios, poste aqui o que já tem feito, assim podemos analisar os possíveis erros no seu código, bem como, verificar qual seu nível em relação a lógica, para adequar a forma de auxílio.

 

Vamos as questões.

 

1ª >> Para resolver esse exercício é necessário usar uma estrutura de repetição e uma estrutura condicional. Aconselho usar o While e o IF;

 

2ª >> Se você quer um valor inteiro ele não pode ser decimal. Via de regra quando queremos arredondar um número seguimos a seguinte lógica: 2,01 a 2,49 exibi-se 2 , 2,5 exibe-se 2,5 e para 2,51 a 2,99 mostra-se 3; Então se você não quer arredondar você não pode setar uma variável com o tipo inteiro(int,integer), você precisa Setar para Real(float,Double).

 

3ª >> Bom imagino que você tenha que alimentar a matriz C com o produto da multiplicação de A e B,certo? Logo você precisa criar a matriz C e nos cálculos puxar os valores de A e B e guardar em C.

 

4ª >> Infelizmente você errou. Esse exercício não tem nada haver com registro. Veja bem, para melhor utilização desse algoritmo, seria necessário o uso de um banco de dados, porém não é o caso. Esse exercício é o mais trabalhoso, porém um dos mais simples e fáceis dos 4. Você vai precisar usar estruturas condicionais e de repetição.

 

 

Finalizando, você precisa melhorar a redação do seu tópico, para facilitar o entendimento de quem vai te ajudar.Quando for postar o seu código, por favor use a tag CODE.

 

 

Abcx,

 

LCS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw

o 1º e 2º ja consegui fazer(nesse era só usar round em vez de floor ou ceil)

o 3º jah tenho ideia de como começar e terminar

Soh o ultimo q tah dando uns erros e se continuar eu posto o CODE

Flw

Desculpa peo trantorno

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Não vamos fazer seus exercícios para você. Poste o que já fez sobre os exercícios que não conseguiu fazer, e podemos te dar dicas de como terminá-lo.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui está o exercício 3

 


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

main()
{

//Definição de variaveis
int i, j, l, c, l1, c1, X;

//Entrada de dados
printf("\n Informe a quntidade de linhas da matriz A : ");
scanf("%d",&l);
printf("\n Informe a quantidade de colunas da matriz A : ");
scanf("%d",&c);
printf("\n Informe a quntidade de linhas da matriz B : ");
scanf("%d",&l1);
printf("\n Informe a quantidade de colunas da matriz B : ");
scanf("%d",&c1);
float matrizA[l][c],matrizB[l1][c1],matrizC[c][l1],Aux=0;
if(c==l1)
{
for(i=0; i<l; i++)
{
        for(j=0; j<c; j++)
        {
        printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da Matriz A: ", i+1, 167, j+1, 167);
        scanf("%f", &matrizA[i][j]);
        }
        printf("\n");
        }
for(i=0; i<l1; i++)
{        
        for(j=0; j<c1; j++)
        {
        printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ", i+1, 167, j+1, 167, 167);
        scanf("%f", &matrizB[i][j]);
        }
        printf("\n");
        }
printf("---------------------------- 1 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i<l; i++)
{        
        for(j=0; j<c; j++)
        {
        printf("%6.f", matrizA[i][j]);
        }
        printf("\n\n");
        }
printf("---------------------------- 2 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i<l1; i++)
{
        for(j=0; j<c1; j++)
        {
        printf("%6.f", matrizB[i][j]);
        }
        printf("\n\n");
        }
//Processamento e saida em tela
for(i=0; i<l; i++)
{
        for(j=0; j<c1; j++)
        {
                 matrizC[i][j]=0;
                 for(X=0; X<l1; X++)
                 {
                 Aux += matrizA[i][X] * matrizB[X][j];
                 }
                 matrizC[i][j]=Aux;
                 Aux=0;
                 }
                 }
                 printf("\n\n");
printf("---------------------------- 3 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i<l; i++)
{
        for(j=0; j<c1; j++)
        {
        printf("%6.f", matrizC[i][j]);
        }
        printf("\n\n");
        }
        printf("\n\n");
        }
else
{
printf("\n\n Nao ha com multiplicar as matrizes dadas ");
}
system("pause");
return 0;
}


 

 

 

 

A metade da matriz final está certo e a outra metade errada

Qual q foi o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aleluia, consegui (eu tinha trocado coluna com linha em um certo momento)

mas tem um porém

Ela ficou imensa, mas disso já sabia

Só que ela pede para fornecer o número de linhas e colunas das duas matrizes e depois atribuir os componentes de cada matriz

Mas meu prof q passou esse exercício disse que já queria as matrizes fixas (A(10x4) e B(4x3)) e era só atribuir os componentes e não as linhas e colunas

O que devo mudar nela então?

 

Aqui está ela:

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

int main()
{
int i, j, lA, cA, lB, cB, X;
printf("\n Informe a quantidade de linhas da matriz A : ");
scanf("%d",&lA);
printf("\n Informe a quantidade de colunas da matriz A : ");
scanf("%d",&cA);
printf("\n Informe a quantidade de linhas da matriz B : ");
scanf("%d",&lB);
printf("\n Informe a quantidade de colunas da matriz B : ");
scanf("%d",&cB);
float matrizA[lA][cA],matrizB[lB][cB],matrizC[lA][cB],Aux=0;
if(cA==lB)
{
for(i=0; i<lA; i++)
{
        for(j=0; j<cA; j++)
        {
        printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da Matriz A: ", i+1, 167, j+1, 167);
        scanf("%f", &matrizA[i][j]);
        }
        printf("\n");
        }
for(i=0; i<lB; i++)
{        
        for(j=0; j<cB; j++)
        {
        printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ", i+1, 167, j+1, 167, 167);
        scanf("%f", &matrizB[i][j]);
        }
        printf("\n");
        }
printf("Matriz A \n\n");
for(i=0; i<lA; i++)
{        
        for(j=0; j<cA; j++)
        {
        printf("%6.f", matrizA[i][j]);
        }
        printf("\n\n");
        }
printf("Matriz B \n\n");
for(i=0; i<lB; i++)
{
        for(j=0; j<cB; j++)
        {
        printf("%6.f", matrizB[i][j]);
        }
        printf("\n\n");
        }
for(i=0; i<lA; i++)
{
        for(j=0; j<cB; j++)
        {
                 matrizC[i][j]=0;
                 for(X=0; X<lB; X++)
                 {
                 Aux += matrizA[i][X] * matrizB[X][j];
                 }
                 matrizC[i][j]=Aux;
                 Aux=0;
                 }
                 }
                 printf("\n\n");
printf("Matriz Gerada da Multiplicação: A*B \n\n");
for(i=0; i<lA; i++)
{
        for(j=0; j<cB; j++)
        {
        printf("%6.f", matrizC[i][j]);
        }
        printf("\n\n");
        }
        printf("\n\n");
        }
else
{
printf("\n\n Nao ha como multiplicar as matrizes dadas \n");
}
system("pause");
return 0;
}

 

 

 

E dos números sorteados não estou conseguindo fazer a contagem, apenas consigo "sortear" os números

Só consegui começar

 

Está aqui

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


int main()
{
   int numsort, i;
   for(i=0; i<15; i++){
       printf("Digite um numero de 0 a 9: ");
       scanf("%d", &numsort);
       }
   system("PAUSE");
   return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

No programa dos números sorteados, a cada interação do loop você aumenta em um a variável i. Se você mostrar ela depois que o for acabar, ela vai mostrar a contagem de quantas vezes o cara inseriu tal número.

 

É isso que você queria?

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

A variavel i que coloquei serve para ficar sorteando até chegar a 15 números de 0 a 9

Agora, eu acho, que preciso de outra variável para contar quantas vezes cada número apareceu

Não sei se foi isso que quis dizer

 

Em questão da matriz, consegui deixar fixas as linhas e as colunas, apenas atribuindo valores para seus componentes, além de ter ficado menor

está aí

 

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

int main(){
int i, j, lA, cA, lB, cB, x;
lA=10;
cA=4;
lB=4;
cB=3;
float matrizA[lA][cA],matrizB[lB][cB],matrizC[lA][cB],Aux=0;
for(i=0; i<10; i++){
        for(j=0; j<4; j++){
                 printf("Informe os Componentes da Matriz A(por linha): ");
        scanf("%f", &matrizA[i][j]);
        }
        printf("\n");
        }
for(i=0; i<4; i++){   
        for(j=0; j<3; j++){
                 printf("Informe os componentes da Matriz B(por linha): ");
        scanf("%f", &matrizB[i][j]);
        }
        printf("\n");
        }
printf("Matriz A \n\n");
for(i=0; i<10; i++){        
        for(j=0; j<4; j++){
        printf("%6.f", matrizA[i][j]);
        /* "%6.f" significa para eliminar 6 casas decimais dos componentes dados */
        }
        printf("\n\n");
        }
printf("Matriz B \n\n");
for(i=0; i<4; i++){
        for(j=0; j<3; j++){
        printf("%6.f", matrizB[i][j]);
        }
        printf("\n\n");
        }
for(i=0; i<10; i++){
        for(j=0; j<3; j++){
                 matrizC[i][j]=0;
                 for(x=0; x<4; x++){
                 Aux += matrizA[i][x] * matrizB[x][j];
                 /* x signica que a quantdade de colunas da Matriz A é mesma  que as linhas da Matriz B */
                 }
                 matrizC[i][j]=Aux;
                 Aux=0;
                 }
                 }
                 printf("\n\n");
printf("Matriz Gerada da Multiplicacao: A*B \n\n");
for(i=0; i<10; i++){
        for(j=0; j<3; j++){
        printf("%6.f", matrizC[i][j]);
        }
        printf("\n\n");
        }
        printf("\n\n");
system("pause");
return 0;
}

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, entendi!

 

Você precisa usar um switch:

 

switch(varx)
{
   case 0:
       vet[0]++;

   case 1:
       vet[1]++;

   case 2:
       vet[2]++;

   case 3:
       vet[3]++;

   /* ... */

   case 9:
       vet[9]++;

   default:
       printf("Valor Inválido!");
}

 

Aí você no final printa o número de vezes que tal valor foi chamado...

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cosegui a matriz e os números

 

Matriz (lembrando que o número de colunas e linhas já foram dados)

/*24. Faça um algoritmo que dadas duas matrizes A(10x4) e B(4x3), calcule a
matriz C, onde C=A*B.*/

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

int main(){
int i, j, lA, cA, lB, cB, x;
lA=10;
cA=4;
lB=4;
cB=3;
float matrizA[lA][cA],matrizB[lB][cB],matrizC[lA][cB],Aux=0;
     for(i=0; i<10; i++){
         for(j=0; j<4; j++){
             printf("Informe os Componentes da Matriz A(por linha): ");
             scanf("%f", &matrizA[i][j]);
         }
         printf("\n");
     }
     for(i=0; i<4; i++){   
         for(j=0; j<3; j++){
             printf("Informe os componentes da Matriz B(por linha): ");
             scanf("%f", &matrizB[i][j]);
         }
         printf("\n");
     }
printf("Matriz A \n\n");
     for(i=0; i<10; i++){        
         for(j=0; j<4; j++){
             printf("%6.f", matrizA[i][j]);
/* "%6.f" significa para eliminar 6 casas decimais dos componentes dados */
         }
         printf("\n\n");
     }
printf("Matriz B \n\n");
     for(i=0; i<4; i++){
         for(j=0; j<3; j++){
             printf("%6.f", matrizB[i][j]);
         }
         printf("\n\n");
     }
     for(i=0; i<10; i++){
         for(j=0; j<3; j++){
             matrizC[i][j]=0;
                 for(x=0; x<4; x++){
                     Aux+= matrizA[i][x] * matrizB[x][j];
/* x significa que a quantidade de colunas da Matriz A é mesma  que as linhas 
da Matriz B */
                 }
                 matrizC[i][j]=Aux;
                 Aux=0;
/* Aux significa guardar valor para não ser perdido durante o algoritmo
- Pág 40-41 */
         }
     }
printf("\n\n");
printf("Matriz Gerada da Multiplicacao A*B \n\n");
     for(i=0; i<10; i++){
         for(j=0; j<3; j++){
             printf("%6.f", matrizC[i][j]);
         }
         printf("\n\n");
     }
printf("\n\n");
system("PAUSE");
return 0;
}

 

 

 

Números Sorteados

/* 13. Faça um algoritmo para calcular a distribuição de freqüência de 
15 valores sorteados de 0 a 9.
Suponha os seguintes números sorteados: 4,5,7,8,9,1,8,2,4,3,2,5,6,7,0
Saída do programa:
Número 0: 1 vez
Número 1: 1 vez
Numero 2: 2 vezes
Número 3: 1 vez
Número 4: 2 vezes
Número 5: 2 vezes
Número 6: 1 vez
Número 7: 2 vezes
Numero 8: 2 vezes
Número 9: 1 vez */

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


int main(){
   int numsort, i, v[10];
   for(i=0;i<10;i++){
       v[i]=0;
   }
   for(i=0; i<15; i++){
       printf("Digite um numero de 0 a 9: ");
       scanf("%d", &numsort);
       v[numsort]++;
   }
   for(i=0;i<10;i++){
       printf("\nNumero %d: %d vez(es)\n\n", i, v[i]);
   }
   system("PAUSE");
   return 0;
}

 

 

 

Agradeço a ajuda de todos

Mas alguém ainda pode me dar uma forcinha na última questão, porq nem sei como começar, mas meu prof falou q tem q ser por registro

Compartilhar este post


Link para o post
Compartilhar em outros sites

O último exercício é simples. Você deve operar sobre structs. Na verdade, como seu professor pediu que fosse criado um algoritmo, você pode escrever pseudo-código.

 

Leia sobre 'struct', 'dot operador', 'arrow operator' e 'aggregate types'.

 

 

Contudo, tenho uma observação: a função char2int() não existe no padrão do C. Ela é completamente desnecessária. Objetos de tipo 'char' podem ser vistos como objetos de tipo 'int' que representam elementos de intervalos menores. Para mais informações, sugiro que leia este post.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode colocar esse tópico com já resolvido

Registro é muito fácil (a ultima questão)

Meu prof falou que queria aprnas a estrutura dos algoritmos e não era necessário compilar

Vlw aew

Compartilhar este post


Link para o post
Compartilhar em outros sites

PESSOAL ME AJUDEM!

MEU PROFESSOR TAMBÉM PASSOU PRA GENTE FAZER UM PROGRAMA QUE MULTIPLIQUE MATRIZES, ESSE TÓPICO AJUDOU MUITO E EU ENTENDI COMO QUE FAZ , SÓ TEM UMA PARTE QUE NÃO ENTENDI: printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ", i+1, 167, j+1, 167, 167); QUE SIGNIFICA ESSE NUMERO 167? ELE APARECE QUANDO A GENTE DIGITA ("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ") EU ESTOU USANDO O DEV C++, QUANDO EU TIRO ESSAS INFORMAÇÕES i+1, 167, j+1, 167, 167 ELE NÃO COMPILA

Compartilhar este post


Link para o post
Compartilhar em outros sites

PESSOAL ME AJUDEM!

MEU PROFESSOR TAMBÉM PASSOU PRA GENTE FAZER UM PROGRAMA QUE MULTIPLIQUE MATRIZES, ESSE TÓPICO AJUDOU MUITO E EU ENTENDI COMO QUE FAZ , SÓ TEM UMA PARTE QUE NÃO ENTENDI: printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ", i+1, 167, j+1, 167, 167); QUE SIGNIFICA ESSE NUMERO 167? ELE APARECE QUANDO A GENTE DIGITA ("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ") EU ESTOU USANDO O DEV C++, QUANDO EU TIRO ESSAS INFORMAÇÕES i+1, 167, j+1, 167, 167 ELE NÃO COMPILA

 

Não.

 

Nem li seu post.

 

Crie um tópico descrevendo seu problema e com perguntas específicas sobre a programação em C. Não poste usando CAPS LOCK. Não poste código sem a tag "code".

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.