A maior rede de estudos do Brasil

Grátis
59 pág.
livro Programacao C - Respostas+dos+exercícios+propostos+C

Pré-visualização | Página 5 de 8

v[10], int t)
{
int i;
float Soma = 0.0;
for (i = 0; i < t; i++)
Soma = Soma + v[i];
return(Soma/t);
}
void MediaLinha(float v[10][10], int m, int n)
{
int i;
for (i = 0; i < m; i++)
v[i][n] = Media(v[i], n);
}
29. /*Função que fornece o menor elemento de cada linha de uma matriz, indicando sua 
coluna*/
float Menor(float v[10], int t, int &p)
{
int i;
float m;
m = v[0];
p = 0;
for (i = 1; i < t; i++)
if (v[i] < m)
{
m = v[i];
p = i;
}
return (m);
}
void MenorElemento(float v[10][10], int m, int n)
{
int i, Col;
float Men;
for (i = 0; i < m; i++)
{
Men = Menor(v[i], n, &Col);
printf("%d \b %.2f \b %d \n", i + 1, Men, Col + 1);
}
}
30. /*Programa que determina uma escala para uma viagem entre duas cidades dadas*/
#include <stdio.h>
#include <conio.h>
void LeDistancias(int v[20][20], int n)
{
int i, j;
printf("Digite as distancias entre as cidades\n");
for (i = 0; i < n; i++)
for (j = i; j < n; j++)
if (i == j)
v[i][j] = 0;
else
{
scanf("%d", &v[i][j]);
v[j][i] = v[i][j];
}
}
void EscreveDistancias(int v[20][20], int n)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf("%d \t", v[i][j]);
printf("\n");
}
}
int Escala(int v[20][20], int n, int o, int d)
{
int i, Esc, Menor;
Esc = 1;
Menor = v[o][o + 1] + v[0][d];
for (i = 0; i < n; i++)
if (v[o][i] + v[i][d] < Menor)
{
Menor = v[o][i] + v[i][d];
Esc = i + 1;
}
return(Esc);
}
main()
{
int NumCidades, x, y, Origem, Destino, Esc;
int Distancias[20][20];
clrscr();
printf("Digite o numero de cidades");
scanf("%d", &NumCidades);
LeDistancias(Distancias, NumCidades);
EscreveDistancias(Distancias, NumCidades);
printf("Digite a origem e o destino \n");
scanf("%d %d", &Origem, &Destino);
if (Origem < Destino)
{
x = Origem;
y = Destino;
}
else
{
x = Destino;
y = Origem;
}
if (Distancias[x­1][y­1] > 400)
{
Esc = Escala(Distancias, NumCidades, x, y) + 1;
printf("A viagem de %d para  %d deve ter uma escala em %d", Origem, Destino, Esc);
}
else
if (Distancias[x­1][y­1] == 0)
printf("\aOrigem e destino iguais!");
else
printf("A viagem de %d para % deve ser feita sem escalas");
}
31. /*Função recursiva para a exibição das combinações de n com taxa k, n e k dados*/
#include <stdio.h>
void Combinacoes(int n, int k, int i, int s, int v[30])
{
int m, j;
if (i < k)
for (j = s; j <= n ­ k + i + 1 ; j++)
{
v[i] = j;
s = j + 1;
Combinacoes(n, k, i + 1, s, v);
if (i == k ­ 1)
{
for (m = 0; m < k; m++)
printf("%d  ", v[m]);
printf("\n");
}
}
}
Capítulo 7
1. /*Fumção que realiza uma pesquisa "pessimista" num vetor*/
int PesquisaPessimista(int *v, int t, int x)
{
int i;
i = 0;
while((v[i] != x) && (v[t ­ i ­ 1] != x) && (i < t/2))
i = i + 1;
if (v[i] == x)
return (i);
else
if (v[t ­ i ­ 1] == x)
return (t ­ i ­ 1);
else
return(­1);
}
2. /*Função que implementa o insertsort*/
/*Função que insere um elemento num vetor ordenado*/
void InsereOrdenado(int v1[500], int &t, int x)
{
int i, j;
i = 0;
while ((v1[i] < x) && (i < *t ))
i = i + 1;
t = t + 1;
for (j = t; j > i; j­­)
v1[j] = v1[j ­ 1];
v1[i] = x;
}
void InsertSort(int v[500], int t)
{
int Aux[500];
int i, j = 1;
Aux[0] = v[0];
for (i = 1; i < t; i++)
InsereOrdenado(Aux, &j, v[i]);
for (i = 0; i < t; i++)
v[i] = Aux[i];
}
3. /*Versão recursiva do selectsort*/
void SelectSortRec(int *v, int t)
{
int Pos, m;
if (t > 1)
{
MaiorElemento(v, t ­ 1, m, Pos);
if (v[t ­ 1] < v[Pos])
{
v[Pos] = v[t ­ 1];
v[t ­ 1] = m;
}
SelectSortRec(v, t ­ 1);
}
}
Capítulo 8
1. /*Programa que verifica se uma palavra é palídroma*/ 
#include <stdio.h>
#include <string.h>
char *InverteString(char *s)
{
int i, Comp;
char *St;
Comp = strlen(s);
for (i = 0; i < Comp; i++)
St[i] = s[Comp ­ 1­ i];
St[Comp] = '\0';
return (St);
}
main()
{
char Str[40], Aux[40];
printf("Digite a string\n");
gets(Str);
strcpy(Aux, Str);
strupr(Aux);
if (strcmp(InverteString(Aux), Aux) == 0)
printf("%s e palindroma", Str);
else
printf("%s nao e palindroma", Str);
}
2. /*Programa que determina o número de palavras de um texto dado*/
#include <stdio.h>
#include <string.h>
int ContaPalavras(char s[1000])
{
int i, Cont = 0, Comp;
Comp = strlen(s);
for (i = 1; i <= Comp; i++)
if ((s[i ­ 1]  != ' ') && (s[i] == ' '|| s[i] == '\0'))
Cont = Cont + 1;
return (Cont);
}
main()
{
int NumPalavras;
char Texto[1000];
printf("Digite o texto\n");
gets(Texto);
NumPalavras = ContaPalavras(Texto);
printf("O texto %s tem %d palavras\n", Texto, NumPalavras);
}
3. /*Programa para converter um número do sistema decimal para o sistema binário*/
#include <stdio.h>
char *InverteString(char *s)
{
int i, Comp;
char *St;
Comp = strlen(s);
for (i = 0; i < Comp; i++)
St[i] = s[Comp ­ 1­ i];
St[Comp] = '\0';
return (St);
}
char *DecBin(int n)
{
int i, j;
char *Bin;
i = 0;
while (n > 0)
{
if (n % 2 == 1)
Bin[i] = '1';
else
Bin[i] = '0';
n = n/2;
i = i + 1;
}
Bin[i] ='\0';
Bin = InverteString(Bin);
return(Bin);
}
main()
{
int Num;
char *Binario;
printf("Digite o numero \n");
scanf("%d", &Num);
Binario = DecBin(Num);
printf("%d = (%s)2 \n", Num, Binario);
}
4. /*Programa para converter um número do sistema binário para o sistema decimal*/
#include <stdio.h>
#include <math.h>
int *BinDec(char *s)
{
int i, Comp, Dec = 0;
Comp = strlen(s);
for (i = 0; i < Comp; i++)
if (s[i] == '1')
Dec = Dec + pow(2, Comp ­ i ­ 1);
return (Dec);
}
main()
{
char *Binario;
int Decimal;
printf("Digite o numero do sistema binario");
gets(Binario);
Decimal = BinDec(Binario);
printf("%s no sistema decimal: %d \n", Binario, Decimal);
}
5. /*Função que verifica se uma conta foi digitada corretamente*/
int ArmazenaDigitos(char *s, int *v)
{
int i,  Comp;
Comp = strlen(s);
for (i = 0; i < Comp; i = i + 1)
v[i] = (int) (s[i] ­ '0');
return(i);
}
char CalculaDigito(char *s)
{
char c;
int t, i, j, Digito, *v;
t = ArmazenaDigitos(s, v);
Digito = 0;
j = 2;
for (i = t ­ 1; i >= 0; i = i ­ 1, j = j + 1)
Digito = Digito + v[i]*j;
Digito = Digito % 11;
Digito = 11 ­ Digito;
if ((Digito == 10) || (Digito == 11))
Digito = 0;
c = (char) Digito + '0';
return (c);
}
int VerificaConta(char *s)
{
int Comp;
char Dv, UltDigito;
char Conta[30];
Comp = strlen(s);
UltDigito = s[Comp ­ 1];
strncpy(Conta, s, Comp ­ 1);
Conta[Comp ­ 1] = '\0';
Dv = CalculaDigito(Conta);
if (UltDigito == Dv)
return (1);
else
return (0);
}
6. /*Programa que substitui uma palavra de um texto*/
#include <stdio.h>
#include <string.h>
int Pos(char *s1, char *s2)
{
char *Aux;
Aux = strstr(s1, s2);
if (Aux != NULL)
return(Aux ­ s1);
else
return (­1);
}
void DeletaCaracteres(char *s, int n, int p)
{
int i,  Comp;
char *Aux;
Comp = strlen(s);
if (p + n <= Comp)
{
i = p;
while (i <= Comp ­ n)
{
s[i] = s[i + n];
i = i + 1;
}
}
else
s[p + 1] = '\0';
}
void InsereCadeia(char *s1, char *s2, int p)
{
int Comp;
char Aux1[50], Aux2[50];
Comp = strlen(s1);
if (p <= Comp)
{
Comp = strlen(s1);
strncpy(Aux1, s1, p);
Aux1[p] = '\0';
strcpy(Aux2,  s1);
DeletaCaracteres(Aux2, p, 0);
strcat(Aux1, s2);
strcat(Aux1, Aux2);
strcpy(s1, Aux1);
}
}
int Substituir(char *s1, char *s2, char *s3)
{
int p, Comp;
p = Pos(s1, s2);
if (p != ­1)
{
Comp = strlen(s2);
DeletaCaracteres(s1, Comp, p);
InsereCadeia(s1, s3, p);
}
else
printf("Palavra nao encontrada");
return (p);
}
main()
{
char Texto[1000], Str1[1000], Str2[1000];
int i;
printf("Digite o texto: ");
gets(Texto);
printf("Substituir: ");
gets(Str1);
printf("Substituir por: ");
gets(Str2);
printf("Texto original: %s \n", Texto);
i = Substituir(Texto, Str1, Str2);
if (i != ­1)
printf("Novo texto: %s \n", Texto);
}
7. /*Programa que converte um nome para o formato ultimo sobrenome/nome*/
#include <stdio.h>
#include <string.h>
char *Copia(char *s, int n, int p)
{
char *Aux;
int Comp;
Comp = strlen(s);
if (p < Comp)
{
Aux = &s[p];
if (p + n < Comp)
Aux[n] = '\0';
else
Aux[strlen(Aux)] = '\0';
return(Aux);
}
else
return (NULL);
}
char *UltimoSobrenome(char *s)
{
int i, n, Comp;
char *Aux;
Comp = strlen(s);
i = Comp ­ 1;
n = 0;
while (s[i] != ' ')
{
i = i ­ 1;
n = n + 1;
}
Aux = Copia(s, n, i + 1);
return (Aux);
}
char *PrimeiroNome(char