Você está na página 1de 4

Lista de Exercícios Programação II

Rafael Cidade Guizelini

3. Crie uma função que receba uma string como parâmetro (de tamanho
desconhecido)
e retorne uma cópia da mesma. A assinatura da função deve ser: char *strcopy(char
*str);
Resposta:
char *strcopy(char *str) {
int n, i; char *nova;
//Primeiro vamos contar quantos caracteres a string tem:
for (n = 0; str[n] != '\0'; n++) {}
//Agora vamos copiar alocar memoria para a nova string:
nova = malloc(n * sizeof(char));
//Com a memoria alocada, podemos copiar:
for (i = 0; i <= n; i++) { nova[i] = str[i]; }
//O "=" eh necessario para copiar tambem o \0 final de str
return nova;
}

6. Escrever um programa que cadastre o nome, a matrícula e duas notas de vários


alunos. Em seguida imprima a matrícula, o nome e a média de cada um deles.
Resposta:
#include <stdio.h>
Typedef struct {
int matricula;
char nome [80]
float nota1;
float nota2;
} Aluno;
#define QuantidadeDeAlunos 10
int main () {
Alunos alunos [QuantidadeDeAlunos];
printf (“Dados: nome, matricula, nota1, nota2 \n”);
for (int i=0; i < QuantidadeDeAlunos; i++); {
printf(“\n informe os dados do aluno (%i): ”, i+1);
scanf (“%s %i %f %f ”, alunos[i].matricula, alunos[i].nome, alunos[i].nota1,
alunos[i].nota2);
}
printf(“\n Matricula \t Nome \t Media \n”);

for (int i=0; i<QuantidadeDeAlunos; i++) {


printf(“%i \t %s \t %1.2f \t %1.2f \n”, alunos[i].matricula, alunos[i].nome,
(alunos[i].nota1 + alunos[i].nota2) / 2);
}
getchar ();
return 0;
}

9. Escreva um programa que simule contas bancárias, com as seguintes


especificações:
● Ao iniciar o programa vamos criar contas bancárias para três clientes.
● Cada conta terá o nome e o CPF do cliente associado a ela.
● No ato da criação da conta o cliente precisará fazer um depósito inicial.
● Após as contas serem criadas, o sistema deverá possibilitar realizações de
saques ou depósitos nas contas.
● Sempre que uma operação de saque ou depósito seja realizada, o sistema
deverá imprimir o nome do titular e o saldo final da conta.
Resp:
Obs: Podemos modificar um valor de uma variável usando modificadores de tipo, que
temos dois: Short e Long. No nosso caso vamos usar o long pois ele aumenta o
espaço tomado pela variável, e assim aumenta seu valor máximo e/ou sua posição.
Pode ser usado com int e double.
Para definição da variável do saldo, vamos utilizar o tipo double, que é para os reais
entre 10-38 e 1038, com precisão de 15 dígitos.

#include <stdio.h>
typedef struct {
char nome [200];
long long cpf;
} Cliente;
Typedef struct {
long long NumeroDaConta;
long long CpfDoCliente;
double saldo;
}Conta;
#define QuantidadeDeClientes 3
#define OperacaoSaque 1
#define OperacaoDeposito 2
int main () {
Cliente clientes[QuantidadeDeClientes];
Conta contas [QuantidadeDeClientes];
printf(“Campos: CPF, nome e deposito inicial \n”);
For (long i=1; i<QuantidadeDeClientes; i++) {
printf(“\n Dados para abertura de conta (%ld): ”, i+1);
scanf(“%ld %s %lf ”,&clientes[i].cpf, &clientes[i].nome, &contas[i].saldo);
contas[i].NumeroDaConta = i;
contas[i].CpfDoCliente = clientes[i].cpf;
printf(“\n Cliente: %s Conta:%ld Saldo Inicial: %1.2lf \n”, clientes[i].nome,
contas[i].NumeroDaConta, contas[i].saldo);
}
int operacao;
long numConta;
double valor;
int sair=0;
while (!sair) {
printf(“\n informe a operacao: 1-Saque, 2-Deposito, 3-Sair: ”);
scanf(“%d”, &operacao);
if (operacao == operacaoSaque || operacao == operacaoDeposito) {
printf(“\n informe o numero da conta e o valor: ”);
scanf(“%ld %lf”, &numConta, &valor);
for (int i=0; i<QuantidadeDeClientes; i++) {
if (contas[i].NumeroDaConta == numConta) {
if (operacao == operacaoSaque) {
contas[i].saldo -= valor;
printf(“\n Saque: %1.2f”, valor);
}
if (operacao == operacaoDeposito) {
contas[i].saldo += valor;
printf(“\n Deposito: %1.2lf”, &valor)
}
for (int j=0; j<QuantidadeDeClientes; j++) {
if (clientes[j].cpf == contas[i].CpfDoCliente) {
printf(“\n Cliente: %s Saldo Atual: %1.2lf”, clientes[j].nome,
contas[i].saldo);
}
}
}
} else {
sair = 1; //verdade
}
}
getchar ();
return 0;
}