#include <iostream>
#include <cstdio>
using namespace std;
/* um nó da lista unicamente ligada */
struct Node
{
int data;
struct Node *next;
};
/* Uma função de utilidade para inserir um nó no início da lista vinculada */
void push(struct Node** head_ref, int new_data)
{
/* alocar o nó */
struct Node* new_node = new Node;
/* coloque os dados */
new_node->data = new_data;
/* vincule a lista antiga do novo nó */
new_node->next = (*head_ref);
/* mova a cabeça para apontar para o novo nó */
(*head_ref) = new_node;
}
/* Uma função de utilidade para imprimir lista vinculada */
void printList(struct Node *node)
{
while (node != NULL)
{
printf("%d ", node->data);
node = node->next;
}
printf("\n");
}
//Retorna o último nó da lista
struct Node *getTail(struct Node *cur)
{
while (cur != NULL && cur->next != NULL)
cur = cur->next;
return cur;
}
//Particiona a lista tomando o último elemento como o pivô
struct Node *partition(struct Node *head, struct Node *end,
struct Node **newHead, struct Node **newEnd)
{
struct Node *pivot = end;
struct Node *prev = NULL, *cur = head, *tail = pivot;
//Durante a partição, tanto a cabeça como o final da lista podem mudar
//que é atualizado nas variáveis newHead e newEnd
while (cur != pivot)
{
if (cur->data < pivot->data)
{
// Primeiro nó que tem um valor menor que o pivô - torna-se
// a nova cabeça
if ((*newHead) == NULL)
(*newHead) = cur;
prev = cur;
cur = cur->next;
}
else // Se o nó cur for maior do que o pivô
{
// Mova o nó cur para a próxima cauda e troque a cauda
if (prev)
prev->next = cur->next;
struct Node *tmp = cur->next;
cur->next = NULL;
tail->next = cur;
tail = cur;
cur = tmp;
}
}
// Se os dados de pivô forem o elemento mais pequeno da lista atual,
// pivô torna-se a cabeça
if ((*newHead) == NULL)
(*newHead) = pivot;
//Atualize newEnd para o último nó atual
(*newEnd) = tail;
//Retornar o nó pivô
return pivot;
}
//aqui a classificação acontece sem o nó final
struct Node *quickSortRecur(struct Node *head, struct Node *end)
{
// base condition
if (!head || head == end)
return head;
Node *newHead = NULL, *newEnd = NULL;
// Participar na lista, newHead e newEnd serão atualizados
// pela função de partição
struct Node *pivot = partition(head, end, &newHead, &newEnd);
//Se o pivô é o elemento mais pequeno - não há necessidade de recorrer
//a parte esquerda.
if (newHead != pivot)
{
//Defina o nó antes do nó pivô como NULL
struct Node *tmp = newHead;
while (tmp->next != pivot)
tmp = tmp->next;
tmp->next = NULL;
//Recorrer para a lista antes do pivô
newHead = quickSortRecur(newHead, tmp);
//Mude o próximo último nó da metade esquerda para girar
tmp = getTail(newHead);
tmp->next = pivot;
}
//Recorrer para a lista após o elemento de pivô
pivot->next = quickSortRecur(pivot->next, newEnd);
return newHead;
}
//A principal função para quicksort. Este é um invólucro sobre recursivo
// funcão quickSortRecur()
void quickSort(struct Node **headRef)
{
(*headRef) = quickSortRecur(*headRef, getTail(*headRef));
return;
}
int main()
{
struct Node *a = NULL;
push(&a, 5);
push(&a, 20);
push(&a, 4);
push(&a, 3);
push(&a, 30);
cout << "\nLista vinculada antes de ordenar \n";
printList(a);
quickSort(&a);
cout << "\n\nLista vinculada apos a classificacao \n";
printList(a);
return 0;
}
Pesquisar neste blog
17/02/2018
14/02/2018
Letras alfabéticas em C/C++
Imprimindo as letras alfabéticas de A até Z em C/C++
#include <stdio.h>
int main(){
char i, j=0;
for(i = 'A'; i<= 'Z'; i++){
printf("[%c %c]\n",i,i+32);
}
printf("\n\n");
for(i = 65; i<=90; i++){
printf("[%c %c]\n",i, i+32);
}
return 0;
}
#include <stdio.h>
int main(){
char i, j=0;
for(i = 'A'; i<= 'Z'; i++){
printf("[%c %c]\n",i,i+32);
}
printf("\n\n");
for(i = 65; i<=90; i++){
printf("[%c %c]\n",i, i+32);
}
return 0;
}
12/02/2018
Fila em C++
Objetivo: Inserir dados em uma lista e remover o ultimo elemento inserido, consultar a lista e exibir os dados da lista (Funciona como fila).
#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
#include <iostream>
using namespace std;
typedef struct celulalista{
int informacao;
struct celulalista *proximo;
}celula;
void initlista(celula *pRecebido);
void insertlista(celula *pRecebido);
void buscalistasimples(celula *pRecebido);
void removeelementolistasimples(celula *pRecebido);
int levalor(int *valorrecebido);
int main(){
//Declaracoes
celula *pLista;
int opcao=0;
//pLista = (celula *)malloc(sizeof(struct celulalista));
pLista = new celulalista;
initlista(pLista);
for(;;)
{
cout<<"\n\t1 - Inserir : ";
cout<<"\n\t2 - Consultar : ";
cout<<"\n\t3 - Remover : ";
cout<<"\n\t4 - Sair : \n\t";
cin>>opcao;
opcao = levalor(&opcao);
switch(opcao)
{
case 1:
insertlista(pLista);
break;
case 2:
buscalistasimples(pLista);
break;
case 3:
removeelementolistasimples(pLista);
break;
case 4:
exit(0);
}
}
return 0;
}
/*
Inicializacao da lista encadeada
*/
void initlista(celula *pRecebido){
(pRecebido)->proximo = NULL;
}
/*
Funcao para insercao no inicio
*/
void insertlista(celula *pRecebido){
//Declaracoes
celula *temporario;
int valor;
//Instrucoes
cout<<"\n\tInforme um valor a ser inserido : ";
cin>>valor;
temporario = (celula * )malloc(sizeof(celula));
temporario->informacao = valor;
temporario->proximo = (pRecebido)->proximo;
(pRecebido)->proximo = temporario;
}
/*
Funcao para percorrer elementos
*/
void buscalistasimples(celula *pRecebido){
//Declaracoes
celula *temporario;
//Instrucoes
if((pRecebido)->proximo == NULL){
cout<<"\tLista Vazia!\n";
}else{
temporario = (celula * )malloc(sizeof(celula));
temporario = (pRecebido)->proximo;
system("cls");
while(temporario!=NULL){
cout<<"\n\tValor : "<<temporario->informacao<<"\n";
temporario = temporario->proximo;
}
}
}
/*
Remove elemento da cabeca
*/
void removeelementolistasimples(celula *pRecebido){
//Declaracoes
celula *temporario;
//Instrucoes
if((pRecebido)->proximo == NULL){
cout<<"\n\tLista Vazia!";
}else{
temporario = (pRecebido)->proximo;
(pRecebido)->proximo = temporario->proximo;
free(temporario);
}
}
int levalor(int *valorrecebido){
//Declaracoes
//Instrucoes
while((*valorrecebido > 4 )|| (*valorrecebido<1)){
cout<<"\n\tOpcao Invalida. Informe novamente : \n";
scanf("%d", &(*valorrecebido));
}
return (*valorrecebido);
}
#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
#include <iostream>
using namespace std;
typedef struct celulalista{
int informacao;
struct celulalista *proximo;
}celula;
void initlista(celula *pRecebido);
void insertlista(celula *pRecebido);
void buscalistasimples(celula *pRecebido);
void removeelementolistasimples(celula *pRecebido);
int levalor(int *valorrecebido);
int main(){
//Declaracoes
celula *pLista;
int opcao=0;
//pLista = (celula *)malloc(sizeof(struct celulalista));
pLista = new celulalista;
initlista(pLista);
for(;;)
{
cout<<"\n\t1 - Inserir : ";
cout<<"\n\t2 - Consultar : ";
cout<<"\n\t3 - Remover : ";
cout<<"\n\t4 - Sair : \n\t";
cin>>opcao;
opcao = levalor(&opcao);
switch(opcao)
{
case 1:
insertlista(pLista);
break;
case 2:
buscalistasimples(pLista);
break;
case 3:
removeelementolistasimples(pLista);
break;
case 4:
exit(0);
}
}
return 0;
}
/*
Inicializacao da lista encadeada
*/
void initlista(celula *pRecebido){
(pRecebido)->proximo = NULL;
}
/*
Funcao para insercao no inicio
*/
void insertlista(celula *pRecebido){
//Declaracoes
celula *temporario;
int valor;
//Instrucoes
cout<<"\n\tInforme um valor a ser inserido : ";
cin>>valor;
temporario = (celula * )malloc(sizeof(celula));
temporario->informacao = valor;
temporario->proximo = (pRecebido)->proximo;
(pRecebido)->proximo = temporario;
}
/*
Funcao para percorrer elementos
*/
void buscalistasimples(celula *pRecebido){
//Declaracoes
celula *temporario;
//Instrucoes
if((pRecebido)->proximo == NULL){
cout<<"\tLista Vazia!\n";
}else{
temporario = (celula * )malloc(sizeof(celula));
temporario = (pRecebido)->proximo;
system("cls");
while(temporario!=NULL){
cout<<"\n\tValor : "<<temporario->informacao<<"\n";
temporario = temporario->proximo;
}
}
}
/*
Remove elemento da cabeca
*/
void removeelementolistasimples(celula *pRecebido){
//Declaracoes
celula *temporario;
//Instrucoes
if((pRecebido)->proximo == NULL){
cout<<"\n\tLista Vazia!";
}else{
temporario = (pRecebido)->proximo;
(pRecebido)->proximo = temporario->proximo;
free(temporario);
}
}
int levalor(int *valorrecebido){
//Declaracoes
//Instrucoes
while((*valorrecebido > 4 )|| (*valorrecebido<1)){
cout<<"\n\tOpcao Invalida. Informe novamente : \n";
scanf("%d", &(*valorrecebido));
}
return (*valorrecebido);
}
10/02/2018
Fatorial em C
#include <stdio.h>
#include <stdlib.h>
unsigned int FACTORIAL (int N){
int I, FACT = 1;
if(N < 0)
return 0;
for(I = 2; I<=N; I++)
FACT *= I;
return FACT;
}
int main(){
int num;
printf("Digite o valor a ser calculador: ");
scanf("%d",&num);
printf("\nFatorial de %d = %d \n\n", num, FACTORIAL(num));
return EXIT_SUCCESS;
}
#include <stdlib.h>
unsigned int FACTORIAL (int N){
int I, FACT = 1;
if(N < 0)
return 0;
for(I = 2; I<=N; I++)
FACT *= I;
return FACT;
}
int main(){
int num;
printf("Digite o valor a ser calculador: ");
scanf("%d",&num);
printf("\nFatorial de %d = %d \n\n", num, FACTORIAL(num));
return EXIT_SUCCESS;
}
08/02/2018
Algoritmo Método da Bisseção C/C++ / Java
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <cstdlib>
using namespace std;
float funcao(float var){
return (pow(var, 3))-2*var;
}
int main(){
float a, b, aux, Erro = 0.01, iteracoes, xm, xx, Errox, Raiz;
int i= 0, k, j;
double fa, fx, fax;
printf("\t\t\tALGORITMO DA BISSECCAO\n\n");
printf("\t\t\tAlunos: Henrique, Dhejck");
printf("\n\n\tDigite o intervalo A: ");
scanf("%f", &a);
printf("\n\tDigite o intervalo B: ");
scanf("%f", &b);
//calculando a quantidade de iterações de acordo com a formula
iteracoes = (log10(b-a)-log10(Erro))/log10(2);
printf("\n\tNumero de Interacoes = %.1f \n\n", iteracoes);
printf("\nITERACOES: A(n) B(n) X(m) Erro F(a) F(xm) F(a).F(xm)");
for(int i=i+1; i <= iteracoes +1; i++){
k = i+0;
xm = (a+b)/2;
Errox = b-a;
printf("\nIteracao: %d %.4f %.4f %.4f %.4f %.2f %.2f %.2f", i, a, b, xm, Errox, fa= funcao(a), fx= funcao(xm), fax= funcao(a) * funcao(xm));
if(funcao(a)* funcao(xm) < 0){
a = a;
b = xm;
}
else{
a = xm;
b = b;
}
}
printf("\n\n\tRAIZ = [%.4f]: apos %d Iteracoes com 4 casas decimais\n\n\n", xm, k);
printf("\n\n\Q1= %f", funcao(a));
//printf("\n\nFunc = %.5f\n\n",func(a));
system("PAUSE");
return (0);
}
EM LINGUAGEM JAVA
package trabalho.pkg2.bissecao;
import java.io.PrintStream;
import static java.lang.Math.log10;
import static java.lang.Math.pow;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double a, b, xm, Erro= 0.01, iteracoes, Errox;
double fa, fxm;
int i = 0, k = 0, cont = 0;
System.out.println("\tALGORITMO DA BISSECÇÃO:");
System.err.println("\tAlunos: Henrique\n");
System.out.printf("Digite o intervalo A: ");
a = input.nextDouble();
System.out.printf("Digite o intervalo B: ");
b = input.nextDouble();
xm = (a+b)/2;
iteracoes = (((log10(b-a))- log10(Erro)) / log10(2));
System.out.printf("\nNúmero de iteracoes = %.1f \n",iteracoes);
System.err.println("\tIterações: A(n) B(n) X(n) Erro(n) f(a) F(xm)");
if(xm == 0){
System.out.println("Raiz = 0 ou possui mais de 1 raiz");
}else{
for(i= i+0; i <= iteracoes +1; i++){
k = i+0;
xm = (a+b)/2;
Errox = b-a;
System.out.printf("\nIterações: %d %.2f %.2f %.2f %.2f %.2f %.2f", i, a, b, xm, Errox, fa= funcao(a), fxm=funcao(a)*funcao(xm));
if(funcao(a)* funcao(xm) < 0){
a = a;
b = xm;
}else{
a = xm;
b = b;
}
}
}
System.err.println("Raiz = "+xm+" após "+k+" iterações:\n");
}
public static double funcao(double x){
return pow(x, 3)-2*x;
}
}
#include <math.h>
#include <stdlib.h>
#include <cstdlib>
using namespace std;
float funcao(float var){
return (pow(var, 3))-2*var;
}
int main(){
float a, b, aux, Erro = 0.01, iteracoes, xm, xx, Errox, Raiz;
int i= 0, k, j;
double fa, fx, fax;
printf("\t\t\tALGORITMO DA BISSECCAO\n\n");
printf("\t\t\tAlunos: Henrique, Dhejck");
printf("\n\n\tDigite o intervalo A: ");
scanf("%f", &a);
printf("\n\tDigite o intervalo B: ");
scanf("%f", &b);
//calculando a quantidade de iterações de acordo com a formula
iteracoes = (log10(b-a)-log10(Erro))/log10(2);
printf("\n\tNumero de Interacoes = %.1f \n\n", iteracoes);
printf("\nITERACOES: A(n) B(n) X(m) Erro F(a) F(xm) F(a).F(xm)");
for(int i=i+1; i <= iteracoes +1; i++){
k = i+0;
xm = (a+b)/2;
Errox = b-a;
printf("\nIteracao: %d %.4f %.4f %.4f %.4f %.2f %.2f %.2f", i, a, b, xm, Errox, fa= funcao(a), fx= funcao(xm), fax= funcao(a) * funcao(xm));
if(funcao(a)* funcao(xm) < 0){
a = a;
b = xm;
}
else{
a = xm;
b = b;
}
}
printf("\n\n\tRAIZ = [%.4f]: apos %d Iteracoes com 4 casas decimais\n\n\n", xm, k);
printf("\n\n\Q1= %f", funcao(a));
//printf("\n\nFunc = %.5f\n\n",func(a));
system("PAUSE");
return (0);
}
EM LINGUAGEM JAVA
package trabalho.pkg2.bissecao;
import java.io.PrintStream;
import static java.lang.Math.log10;
import static java.lang.Math.pow;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double a, b, xm, Erro= 0.01, iteracoes, Errox;
double fa, fxm;
int i = 0, k = 0, cont = 0;
System.out.println("\tALGORITMO DA BISSECÇÃO:");
System.err.println("\tAlunos: Henrique\n");
System.out.printf("Digite o intervalo A: ");
a = input.nextDouble();
System.out.printf("Digite o intervalo B: ");
b = input.nextDouble();
xm = (a+b)/2;
iteracoes = (((log10(b-a))- log10(Erro)) / log10(2));
System.out.printf("\nNúmero de iteracoes = %.1f \n",iteracoes);
System.err.println("\tIterações: A(n) B(n) X(n) Erro(n) f(a) F(xm)");
if(xm == 0){
System.out.println("Raiz = 0 ou possui mais de 1 raiz");
}else{
for(i= i+0; i <= iteracoes +1; i++){
k = i+0;
xm = (a+b)/2;
Errox = b-a;
System.out.printf("\nIterações: %d %.2f %.2f %.2f %.2f %.2f %.2f", i, a, b, xm, Errox, fa= funcao(a), fxm=funcao(a)*funcao(xm));
if(funcao(a)* funcao(xm) < 0){
a = a;
b = xm;
}else{
a = xm;
b = b;
}
}
}
System.err.println("Raiz = "+xm+" após "+k+" iterações:\n");
}
public static double funcao(double x){
return pow(x, 3)-2*x;
}
}
20/01/2018
Torre de Hanoi em C/C++
Biblioteca iStack.h
#ifndef ISTACK_H_
#define ISTACK_H_
#define SIZE 10
typedef struct iStack {
int elements[SIZE];
int top;
int id;
}iStack;
void init(iStack *stack, int id);
void push(iStack *stack, int element);
int pop(iStack *stack);
int top(iStack *stack);
int isEmpty(iStack *stack);
int isFull(iStack *stack);
int size(iStack *stack);
int capacity(iStack *stack);
void show(iStack *stack);
void init(iStack *stack, int id) {
stack->top = -1;
stack->id = id;
}
void push(iStack *stack, int element) {
if (!isFull(stack)) {
stack->top++;
stack->elements[stack->top]=element;
} else
printf("Push not allowed: stack is full.\n");
}
int pop(iStack *stack) {
if (!isEmpty(stack)) {
stack->top--;
return stack->elements[stack->top+1];
} else {
printf("Pop not allowed: stack is empty.\n");
return -1;
}
}
int top(iStack *stack) {
return isEmpty(stack)?-1:stack->elements[stack->top];
}
int isEmpty(iStack *stack) {
return stack->top==-1;
}
int isFull(iStack *stack) {
return stack->top==SIZE-1;
}
int size(iStack *stack) {
return stack->top+1;
}
int capacity(iStack *stack) {
return SIZE;
}
void show(iStack *stack) {
while (!isEmpty(stack)) {
printf("%d\n", pop(stack));
}
}
#endif
Arquivo principal Main
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "iStack.h"
int hanoi(int qtd, iStack *origem, iStack *aux, iStack *destino);
int main(){
iStack pilha1, pilha2, pilha3;
int qtd, aux, i=0;
init(&pilha1, 1);
init(&pilha2, 2);
init(&pilha3, 3);
printf("TORRE DE HANOI\n");
printf("Digite o numero de discos: ");
scanf("%d", &qtd);
aux = qtd;
while(aux > 0){
push(&pilha1, aux);
aux --;
}
hanoi(qtd, &pilha1, &pilha2, &pilha3);
}
int hanoi(int qtd, iStack *origem, iStack *aux, iStack *destino){
int topoOrigem;
if(qtd==1){
topoOrigem = pop(origem);
push(destino, topoOrigem);
printf("\n%d para %d", origem->id, destino->id);
} else {
hanoi(qtd-1, origem, destino, aux);
hanoi(1, origem, aux, destino);
hanoi(qtd-1, aux, origem, destino);
}
}
/*
//OUTRO MÉTODO:
void mover(int num, iStack *origem, iStack *destino, iStack *aux) {
push(destino,pop(origem));
if (num == 1) {
printf("\nDisco %d: %d -> %d", num, origem->id, destino->id);
} else {
mover(num-1,origem, aux, destino);
printf("\nDisco %d: %d -> %d", num, origem->id, destino->id);
mover(num-1, aux, destino, origem);
}
}
int main() {
int discos, i, aux;
iStack torres[3];
init(&torres[0],1);
init(&torres[1],2);
init(&torres[2],3);
printf("Digite o numero de discos: ");
scanf("%d", &discos);
aux = discos;
for(i=0; i<aux; i++){
push(&torres[0], discos);
discos--;
}
mover(size(&torres[0]), &torres[0], &torres[2], &torres[1]);
}*/
24/11/2017
Registro em C++ / C
Considerando os registros de 10 funcionários com os campos matrícula, nome e
salário, desenvolver um algoritmo que utilize subprogramas e apresente um
menu para a execução das seguintes etapas:
a) Cadastrar os registros;
b) Apresentar um relatório dos funcionários em ordem alfabética;
c) Apresentar um relatório onde conste a média dos salários dos
funcionários;
d) Mostrar os funcionários que recebem acima de um determinado valor
fornecido pelo usuário. Esse valor deve compreender o maior e o menor
salário registrado dos funcionários.
Resolução:
#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
struct ficha
{
int matricula;
string nome;
float salario;
};
const int tam=3;
ficha empresa[tam];//variavel global
void cadastro()
{
cout<<"Digitar o registro de funcionários \n";
for (int i=0;i<tam;i++){
cout<<"\nMatricula "; cin>>empresa[i].matricula;
cout<<"\nNome "; cin>>empresa[i].nome;
cout<<"\nSalario "; cin>>empresa[i].salario;
}
}
void ordena()
{
ficha aux;
for(int i=0; i<tam-1;i++)
for(int j=(i+1);j<tam;j++)
{
if(empresa[i].nome>empresa[j].nome)
{
aux=empresa[i];
empresa[i]=empresa[j];
empresa[j]=aux;
}
}
}
void ordenasalario()
{
ficha aux;
for(int i=0; i<tam-1;i++)
for(int j=(i+1);j<tam;j++)
{
if(empresa[i].salario>empresa[j].salario)
{
aux=empresa[i];
empresa[i]=empresa[j];
empresa[j]=aux;
}
}
}
void listar1()
{
ordena();
for(int i=0;i<tam;i++)
{
cout<<"\nMatricula "<<empresa[i].matricula;
cout<<"\nNome "<<empresa[i].nome;
cout<<"\nSalario "<<empresa[i].salario;
cout<<"\n";
}
}
float mediasalarios()
{
float soma=0;
for(int i=0;i<tam;i++){
soma=soma+empresa[i].salario;
}
return(soma/tam);
}
void listarsalario()
{
float salario;
ordenasalario();
float maiorsalario=empresa[tam-1].salario;
float menorsalario=empresa[0].salario;
cout<<"Qual é o salário base para listagem?";
cin>>salario;
if(salario>=menorsalario && salario<=maiorsalario)
{
for(int i=0;i<tam;i++){
if (empresa[i].salario>salario){
cout<<"\nMatricula "<<empresa[i].matricula;
cout<<"\nNome "<<empresa[i].nome;
cout<<"\nSalario "<<empresa[i].salario;
cout<<"\n";
}
}
}
else
cout<<"O salário fornecido não compreende o maior e o menor salário pago";
}
void buscar(){
string pesq;
printf("\n\nDigite o nome a ser pesquisado: ");
cin>>pesq;
for(int i=0; i<tam; i++){
if(pesq == empresa[i].nome){
cout<<"\nAhcei : ";
cout<<"\nNome: "<<empresa[i].nome;
cout<<"\nMatricula: "<<empresa[i].matricula;
cout<<"\nSalario: "<<empresa[i].salario;
}
}
}
void menu()
{
int op=1;
while (op!=5){
cout<<"\nSelecione a opcao ";
cout<<"\n 1.Cadastrar funcionarios ";
cout<<"\n 2.Listar funcionarios em ordem alfabetica ";
cout<<"\n 3.Listar media dos salarios ";
cout<<"\n 4.Listar funcionario por base no salario especifico";
cout<<"\n 5.Buscar ";
cout<<"\n 6. SAIR \n\n";
cin>>op;
switch(op)
{
case 1: cadastro();
break;
case 2: listar1();
break;
case 3: cout<<"A média dos salários é R$ "<<mediasalarios();
break;
case 4:listarsalario();
break;
case 5: buscar();
break;
case 6: cout<<"Obrigado\n\n";
break;
}
}
}
int main(int argc, char** argv) {
menu();
return 0;
}
#include <stdlib.h>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
struct ficha
{
int matricula;
string nome;
float salario;
};
const int tam=3;
ficha empresa[tam];//variavel global
void cadastro()
{
cout<<"Digitar o registro de funcionários \n";
for (int i=0;i<tam;i++){
cout<<"\nMatricula "; cin>>empresa[i].matricula;
cout<<"\nNome "; cin>>empresa[i].nome;
cout<<"\nSalario "; cin>>empresa[i].salario;
}
}
void ordena()
{
ficha aux;
for(int i=0; i<tam-1;i++)
for(int j=(i+1);j<tam;j++)
{
if(empresa[i].nome>empresa[j].nome)
{
aux=empresa[i];
empresa[i]=empresa[j];
empresa[j]=aux;
}
}
}
void ordenasalario()
{
ficha aux;
for(int i=0; i<tam-1;i++)
for(int j=(i+1);j<tam;j++)
{
if(empresa[i].salario>empresa[j].salario)
{
aux=empresa[i];
empresa[i]=empresa[j];
empresa[j]=aux;
}
}
}
void listar1()
{
ordena();
for(int i=0;i<tam;i++)
{
cout<<"\nMatricula "<<empresa[i].matricula;
cout<<"\nNome "<<empresa[i].nome;
cout<<"\nSalario "<<empresa[i].salario;
cout<<"\n";
}
}
float mediasalarios()
{
float soma=0;
for(int i=0;i<tam;i++){
soma=soma+empresa[i].salario;
}
return(soma/tam);
}
void listarsalario()
{
float salario;
ordenasalario();
float maiorsalario=empresa[tam-1].salario;
float menorsalario=empresa[0].salario;
cout<<"Qual é o salário base para listagem?";
cin>>salario;
if(salario>=menorsalario && salario<=maiorsalario)
{
for(int i=0;i<tam;i++){
if (empresa[i].salario>salario){
cout<<"\nMatricula "<<empresa[i].matricula;
cout<<"\nNome "<<empresa[i].nome;
cout<<"\nSalario "<<empresa[i].salario;
cout<<"\n";
}
}
}
else
cout<<"O salário fornecido não compreende o maior e o menor salário pago";
}
void buscar(){
string pesq;
printf("\n\nDigite o nome a ser pesquisado: ");
cin>>pesq;
for(int i=0; i<tam; i++){
if(pesq == empresa[i].nome){
cout<<"\nAhcei : ";
cout<<"\nNome: "<<empresa[i].nome;
cout<<"\nMatricula: "<<empresa[i].matricula;
cout<<"\nSalario: "<<empresa[i].salario;
}
}
}
void menu()
{
int op=1;
while (op!=5){
cout<<"\nSelecione a opcao ";
cout<<"\n 1.Cadastrar funcionarios ";
cout<<"\n 2.Listar funcionarios em ordem alfabetica ";
cout<<"\n 3.Listar media dos salarios ";
cout<<"\n 4.Listar funcionario por base no salario especifico";
cout<<"\n 5.Buscar ";
cout<<"\n 6. SAIR \n\n";
cin>>op;
switch(op)
{
case 1: cadastro();
break;
case 2: listar1();
break;
case 3: cout<<"A média dos salários é R$ "<<mediasalarios();
break;
case 4:listarsalario();
break;
case 5: buscar();
break;
case 6: cout<<"Obrigado\n\n";
break;
}
}
}
int main(int argc, char** argv) {
menu();
return 0;
}
21/09/2017
ELETRICIDADE APLICADA EA06
1)Usando a análise nodal, calcule V1, V2 e i no circuito abaixo. Resposta: V1=4V, V2=36V e i=4A.
Resolução
Simulador EasyEDA |
LKC em V1
4 + i = 7 + i1
i - i1 = 3
OHM
1/8(V2 - V1) - 1/4(V1-0) = 3
V2 - V1 - 2V1 = 24
V2 - 3V1 = 24 (1)
LKC em V2
7 = i + i2
OHM
1/8(V2 - V1 + 1/12)(V2 - 0) = 7
(3V2 - 3V1 + 2V2)/24 = 7
5V2 - 3V1 = 168 (2)
(2) - (4)
5V2 - 3V1 = 168
-V2 + 3V1 = - 24
4V2 = 144
V2 = 36V
De (1)
36 - 3V1 = 24
V1= 4V
i = (36 - 4)/8 = 4A
Simulador EveryCircuit |
2) Repita o exercício anterior utilizando a análise de malha.
LKT em II
4(i2 - i1) + 8(i2 - i3) + 12i2 = 0
4(i2 - 4) + 8(i2 - i3) + 12i2 = 0
4i2 - 16 + 8i2 - 56 + 12i2 = 0
24i2 = 72
i2 = 3A
V1 = 4(i1 - i2) = 4(4-3) = 4V
V2 - V1 = 8(i3 - i2)
V2 - 4 = 8(7 - 3)
V2 = 36V
i = i3 - i2 = 7 - 3 = 1A
3) Usando a análise nodal, calcule V1, V2 e V3 no circuito abaixo. Resposta: V1= 24V, V2= - 4V e V3=20V.
Resolução
Simulador EasyEDA |
LKC em Va
5 + 6 = i1 + i3
OHM
(Va - Vb ) /4
(Va - Vb) /4 + Va - 0)/4 = 11 (1)
LKC em Vb
i1 = 5 + i2 + 3
OHM
(Va - Vb) / 4 = Vb / 2 + 8 (2)
Va = 20V
Vb = - 4V
V1 = Va - Vb = 20 - (- 4) = 24V
V2 = Vb - 0 = - 4 = - 4V
Vb = Va - 0 = 20 V
Simulador EveryCircuit |
4) Repita o exercício anterior utilizando a análise de malha.
i2 - i3 = 5 (1)
i3 - i4 = 6 (2)
i1 = 3
LKT
2(i1 - i3) - 4i2 - 4i4 = 0
3 - i3 - 2i2 - 2i4 = 0
2i2 + 2i4 + i3 = 3 (3)
(1) + (2)
i2 - i4 = 11 (4)
(1) + (3)
3i2 + 2i4 = 8 (5)
2(4) + (5)
2i2 - 2i4 = 22
3i2 + 2i4 = 8
5i2 = 30
i2 = 6A
De (4)
6 - i4 = 11 => i4 = - 5A
De(2)
i3 - (-5) = 6 => i3 = 1A
V1 = 4i2 = 4 . 6 = 24V
V2 = 2(i3 - i1) = 2(1-3) = - 4V
LKT em i4
4i4 + V3 = 0
V3 = - 4i4 = - 4 . (-5) = 20V
5) Usando análise nodal, calcule v no circuito abaixo, se o elemento “desconhecido” é uma fonte independente de tensão de 4V com terminal positivo na parte superior. Resposta: v= 20V.
Resolução
Simulador EasyEDA |
LKC emV1
i2 = i3 + i
OHM
(V2 - V1) /6 = (V1 - V3) /3 + (V1 - 0)/4
(2V2 - 2V1) /12 = (4V1 - 4V3 + 3V1) /12
2V2 - 2V1 = 4V1 - 4V3 + 3V1
- 9V1 + 2V2 + 4V3 = 0 (1)
V2 - V3 = 24 (2)
V3 - 0 = 4
V3 = 4V
De (2)
V2 - 4 = 24 => V2 = 28V
D2 (1)
- 9V1 + 2 . 28 + 4 . 4 = 0
V1 = 8V
V = V2 - V1 = 28 - 8 = 20V
6) Repita o exercício anterior utilizando a análise de malha.
LKT em i2
4(i2 - i1) + 3(i2 - i1) + 3(i2 - i3) + 4 = 0 (1)
LKT em i1
-30 + 8i1 + 6(i1 - i3) + 4(i1 - i2) = 0 (2)
LKT em i3
3(i3 - i2) + 6(i3 - i1) + 24 = 0 (3)
i2 = -i (4)
Resolvendo; Logo:
i = 7/4A ; i1 = 1/4A ; i2 = - 7/4A ; i3 = - 37/12A
V = 6(i1 - i3) = 6[1/4 - (- 37/12) ] = 20V
7) Repita o exercício 5, se o elemento “desconhecido” é uma fonte independente de corrente de 7A
apontando para cima. Resposta: V = 26V.
Resolução:
Simulador EasyEDA |
Por análise de malha
LKT em i2
- 30 + 8i2 + 6(i2 - i3) + 4(i2 - i1) = 0 (1)
LKT em i3
3(i3 - i1) + 6(i3 - i2) + 24 = 0 (2)
Resolvendo, temos que:
i1 = - 7A
i2 = - 2A
i3 = -19/3 A
V = 6(i2 - i3) = 6[ - 2 - ( -19/3)] = 26V
8) Usando a análise de malhas, calcule i1 e i2 no circuito abaixo, se R1=2Ω, R2=4Ω, R3=3Ω, vg1=9V e vg2=-5V. Resposta: i1=3A, i2=2A.
LKC em i1
i1 . 2 + 3(i1 - i2) + i1 . 3 = 9
8i1 + i1.2 - 3i2 = 9
LKC em i2
4.i2 + 3(i2 - i1) = - 5
- 3.i1 + 7.i2 = -5
i1 = 3A
i2 = 2A
Simulador EveryCircuit |
9) Repita o exercício anterior utilizando a análise nodal.
LKC em I3
I1 = I2 + I3
(V1 - V3)/2 = (V3 - V2)/4 + 3 - 0)/3 (1)
V1 - 0 = 9 = 9V
V2 - 0 = - 5 = - 5V
Logo; V3 = 3V
i1 = (V1 - V3)/2 = (9 - 3) / 2 = 3A
i2 = V3 - V2) / 4 = (3 - - 5) / 4 = 2A
I1 = I2 + I3
(V1 - V3)/2 = (V3 - V2)/4 + 3 - 0)/3 (1)
V1 - 0 = 9 = 9V
V2 - 0 = - 5 = - 5V
Logo; V3 = 3V
i1 = (V1 - V3)/2 = (9 - 3) / 2 = 3A
i2 = V3 - V2) / 4 = (3 - - 5) / 4 = 2A
10) Usando a análise de malhas, calcule i1 e i2 no circuito abaixo, se o elemento x é uma fonte de tensão independente de 6V, com terminal positivo na parte superior. Resposta: i1=2A, i2=1A.
Resolução:
LKT no sentido horário na malha 1
2i1 + 3(i1 - i2) = 16 - 9
5i1 - 3i2 = 7
6i2 + 3i2 - 3i1) = 9 - 6
-3i1 + 9i2 = 3
Resolvendo em álgebra
3.L1 + 5.L2
36.i2 = 36
i2 = 1A
5i1 - 3 . 1 = 7
i1 = 2A
11) Repita o exercício anterior utilizando a análise nodal.
Simulador EasyEDA |
Resolução:
LKC em V1
i1 = i2 + i3 OHM (V3 - V1)/2 = (V1 - V2) /6 + i3 (1)
V1 - V4 = 9 (2)
V4 - 0 = 3i3 (3)
(2) + (3)
V1 = 9 + 3i3
i3 = (V1 - 9) / 3 (4)
(4) em (1)
(V3 - V1) /2 = (V1 - V2) /6 + (V1 - 9) /3 (5)
V3 - 0 = 16
V3 = 16V
V2 - 0 = 6 = 6V
De (5) temos;
V1 = 12V
i1 = (V3 - V1) /2 = (16 - 12 ) /2 = 2A
i2 = (12 - 6) / 6 = 1A
12) Usando a análise de malhas, calcule i1 no circuito abaixo. Resposta: i=2A .
Resolução:
LKT na malha 2
4(i2 - i1) + 3i2 + 5i(i2 - i3) = 0
- 4i1 + 12i2 - 5i3 = 0
i1 = 11A e i3 = 4A
- 4(11) + 12i2 - 5(4) = 0
i2= 2A
i2 = i = 2A
V= 3 . 2 = 6V
i = 6 / 3 = 2A
Simulador EveryCircuit |
13) Repita o exercício anterior utilizando a análise nodal.
Resolução
Simulador EasyEDA |
LKC em V1
11 = i + i1 OHM (V1 - V2) /3 + (V1 - 0)/4 = 11 (1)
LKC em V2
i + 4 = i2 OHM (V1 - V2) /3 + 4 = (V2 - 0) /5 (2)
V1 = 35V
V2 = 30V
i = (V1 - V2) /3 = (36 - 30) /3 = 2A
14) No circuito abaixo, considere R1= 4Ω, R2 = 6Ω, R3 = 2Ω, ig1 = 4A,e ig2 = 6A e vg3 = 52V. Mantendo i2 e i3 como indicado e trocando i1 para uma corrente de laço no sentido horário que passa através de R1, R2 e R3 e vg3, empregue a análise de malha para encontrar a potência entregue a R3 (note que neste caso a corrente em e R3 é i1 + i3). Resposta: 18W.
i2 = - 4A e i3 = 6A
LKT em ABCD
4(i1 - i2) + 6(i1 + i3 - i2) + 2(i1 + i3) - 52 = 0
12i1 - 10i2 + 8i3 = 52
12i1 = - 36
i1 = -3A
P = R . i . i = 2(-3 . -3) = 18W
Simulador EveryCircuit |
15) Usando a análise nodal, calcule V1 e V2 no circuito abaixo. Resposta: V1=40V, V2=24V.
Simulador EasyEDA |
LKC em x 12 = i1 + i3 OHM (Va - 0)/4 + Va - Vb) /8 = 12 (1)
LKC em y i3 + 2 = i2 OHM (Va - Vb) /8 + 2 = (Vb - 0) /6 (2)
Va = 40V V1 = Va - 0 = 40 = 40V
Vb = 24V V2 = Vb - 0 = 24 = 24V
Simulador EveryCircuit |
16) Repita o exercício anterior utilizando a análise de malha.
i1 = 12A
i3 - i2 = 2 (1)
LKT em ABCD
4(i2 - i1) + 8i2 + 6i3 = 0
- 4i1 + 12i2 + 6i3 = 0
i1 = 12A
i2 = 2A
i3 = 4A
V1 = 4(i1 - i2) = 4(12 - 2) = 40V
V2 = 6i3 = 6 . 4 = 24V
17) Usando a análise nodal, calcule i1 e i2 no circuito abaixo. Resposta: i1= 2A, i2= 4A.
Simulador EasyEDA |
LKC em V1 6 = i1 + i3 + 5
i1 + i3 = 1 OHM V1 /4 + (V1 - V2) /8 = 1
LKC em V2
i3 + 5 = i2
OHM (V1 - V2) /8 + 5 = V2 /4
V1 = 8V
V2 = 16V
i1 = V1 / 4 = 8/4 = 2A
i2 = V2 /4 = 16/4 = 4A
Simulador EveryCircuit |
18) Repita o exercício anterior utilizando a análise de malha.
i3 = 6A
i4 = i2 (1)
i5 = 5A
LKT em i4
4(i4 - i3) + 8(i4 - i5) + 4i4 = 0 (2)
(1) em (2)
i1 = i3 - i4 = 6 - 4 = 2A
19) Usando a análise nodal, calcule i no circuito abaixo. Resposta: i=3A.
Simulador EasyEDA |
LKC em V3
10 = i1 + i2 OHM (V3 - V2) /3 + (V3 - V4) /6 = 10
LKC em V2
i1 = i + i3 OHM (V3 - V2) /3 = (V2 - V4) /2 + V2/4
LKC em X
i + i2 = i4 OHM (V2 - V4) /2 + (V3 - V4) /6 = V4 /3
V2 = 27V
V3 = 45V
V4 = 24V
i = (27 - 21) /2 = 3A
simulador EveryCircuit |
20) Repita o exercício anterior utilizando a análise de malha.
i1 = 10A
LKT em i2
3(i2 - i1) + 6i2 + 2(i2 - i3) = 0
LKT em i3
9(i3 - i1) + 2(i3 - i2) + 3i3 = 0
i2 = 4A
i3 = 7A
i = 7 - 4 = 3A
21) Usando a análise nodal, calcule i no circuito abaixo. Resposta: i=2A.
LKC em V1
1 = i1 + i + i2 OHM (V1 - V3) /4 + (V1 - V2) /2 + V1 /4 = 1
LKC em V2
i = 1 + i3 + i4 OHM (V1 - V2) /2 = 1
(V1 - V2) /2 = 1 + 2 - 0) /4 + (V2 - V4) /4
V4 - 0 = 8 = 8V
V3 - 0 = 24 = 24V
V1 = 10V
V2 = 6V
V3 = 24V
V4 = 8V
i = (V1 - V2) /2 = (10 - 6) /2 = 2A
simulador EveryCircuit |
i2 = -1A
LKT em i1
4i1 + 4(i1 - i3) = 24
8i1 - 4i3 = 24
LKT em i3
4(i3 - i1) + 2(i3 - i2) + 4(i3 - i4) = 0
- 4i1 - 2i2 + 10i3 - 4i4 = 0
LKT em i4
4(i4 - i3) + 4i4 = - 8
- 4i3 + 8i4 = -8
Resolvendo por algebra
i1 = 7A
i3 = 1A
i4 = - 1/2
i = i3 - i2 = 1 - (-1) = 2A
23) Usando a análise nodal, calcule v no circuito abaixo. Resposta: v= 20V.
LKC em A
18x10-3 = i1 + i2 + i3 OHM (V2 - 0) /4x103 + V2 - V3) /12x103 + (V2 - V1) /6103 = 18x 10-3
LKC em B i3 + i2 + 6x10-3 = i4
OHM (V2 - V4) /6x103 + (V2 - V3) /12x103 + 6x103 = ((V3 - 0) /4x103
V4 - V3 = 9
V2 = 58V
V4 = 47V
V = V2 - V3 = 58 - 38 = 20V
Simulador EveryCircuit |
24) Repita o exercício anterior utilizando a análise de malha.
i1 = 18x10-3 A
i4 = - 6x10-3
LKT em i2
[6i2 + 12(i2 - i3)]103 = -12
LKT em i3
[ 4(i3 - i3) + 12(i3 - i2) + 4(i3 - i4) ]103 = 0
i1 = 9 / 500 = 0,018A
Va - 0 = 4(i1 - i3)103 = 4(9/500 - 7/2000)103 = 58V
i2 = 11/600 A
i3 = 7 / 200 A
Vb - 0 = 4(i3 - i4)103= 4[7/200 - ( -3/500) ] 103
i4 = -3/500A
Vb = 38V
V = Va - Vb = 58 - 38 = 20V
25) Resolva o circuito abaixo, se as fontes de corrente de 2A, 3A e 7A são substituídas por fontes de tensão de, respectivamente, 17V, 4V e 16V, sendo o terminal positivo a parte superior de cada uma delas.
2i1 + 4(i1 - i2) = - 4
6i1 - 4i2 = - 4
4(i2 - i1) + 2(i2 - i4) = 17
- 4i1 + 6i2 - 2i4 = 17
6i3 + 8(i3 - i4) = 4
14i3 - 8i4 = 4
8(i4 - i3) + 2(i4 - i2) + 6i4 = - 16
- 2i2 - 8i3 + 16i4 = -16
Resolvendo por algebra
i1 = 2A i2 = 4A
i3 = 0A i4 = - 1/2A
V = 4(i2 - i1) = 4(4 - 2) = 8V
Simulador EveryCircuit |
26) Calcule v usando o método (nodal ou de malhas) que requer o menor número de equações.
Por analise de Malha
i1 = 2A
i4 = - 3A
LKT em i2
6(i2 - i1) + 2i2 + 6(i2 - i3) + 4(i2 - i4) = 0
- 12i1 + 18i2 - 6i3 - 4i4 = 0
LKT em i3
3(i3 - i4) + 6(i3 - i2) = - 12
- 6i2 + 9i3 - 3i4 = -12
Algebra
i1 = 2A
i2 = - 1A
i3 = - 3A
i4 = - 3A
V = 4(i2 - i4) = 4(-1 + 3) = 8V
Simulador EveryCircuit |
02/09/2017
ELETRÔNICA DIGITAL
Desenhe o gráfico do sinal de saída admitindo que os sinais de entradas estão indicadas na figura:
Solução:
Assinar:
Postagens (Atom)