Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 1 Usuários ativos

    0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

Cursos Online iMasters
Foto:

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

  • Por favor, faça o login para responder
15 respostas neste tópico

#1 WagCez

WagCez
  • Membros
  • 14 posts

Postado 05 junho 2011 - 15:55

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

Editado por Mário Monteiro, 05 junho 2011 - 22:15 .
Retirada a palavra "DÚVIDA" do Titulo ou Descrição

  • 0

#2 LCS

LCS

    Lucas Vinha

  • Membros
  • 369 posts

Postado 05 junho 2011 - 17:47

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
  • 0

#3 WagCez

WagCez
  • Membros
  • 14 posts

Postado 05 junho 2011 - 19:41

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
  • 0

#4 Renato Utsch

Renato Utsch

    Low Level Fanatic

  • Membros
  • 994 posts

Postado 05 junho 2011 - 22:34

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
  • 0

#5 WagCez

WagCez
  • Membros
  • 14 posts

Postado 06 junho 2011 - 19:23

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?

Editado por quitZAUMMM, 06 junho 2011 - 21:39 .
Inclusão da tag [code]

  • 0

#6 Renato Utsch

Renato Utsch

    Low Level Fanatic

  • Membros
  • 994 posts

Postado 08 junho 2011 - 09:18

Cara, tenha paciência!


Ninguém é obrigado a responder você não. Tem só 2 dias. Aguarde.
  • 0

#7 WagCez

WagCez
  • Membros
  • 14 posts

Postado 08 junho 2011 - 09:49

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;
}

  • 0

#8 Renato Utsch

Renato Utsch

    Low Level Fanatic

  • Membros
  • 994 posts

Postado 08 junho 2011 - 10:42

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
  • 0

#9 WagCez

WagCez
  • Membros
  • 14 posts

Postado 08 junho 2011 - 11:09

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
  • 0

#10 Renato Utsch

Renato Utsch

    Low Level Fanatic

  • Membros
  • 994 posts

Postado 08 junho 2011 - 11:19

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
  • 0

#11 WagCez

WagCez
  • Membros
  • 14 posts

Postado 08 junho 2011 - 12:01

vlw
vou tentar mais tarde
tenho que sair agora
abraços
  • 0

#12 WagCez

WagCez
  • Membros
  • 14 posts

Postado 08 junho 2011 - 21:33

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
  • 0

#13 guidjos

guidjos
  • Moderadores
  • 632 posts

Postado 09 junho 2011 - 00:26

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

#14 WagCez

WagCez
  • Membros
  • 14 posts

Postado 11 junho 2011 - 09:18

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
  • 0

#15 leeland

leeland
  • Membros
  • 3 posts

Postado 24 junho 2011 - 12:14

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
  • 0

#16 guidjos

guidjos
  • Moderadores
  • 632 posts

Postado 24 junho 2011 - 12:38

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".
  • 0




Publicidade

/ins>