
RS25
Membros-
Total de itens
25 -
Registro em
-
Última visita
Tudo que RS25 postou
-
Boa tarde, Estou tendo problemas com o teste unitário. Não estou conseguindo fazer o teste ir para dentro do if. public static function verificaAutomovel($cod_auto, $cod_rodas){ $rodas = Model_Dao_CarroRodas::getNomesRodasCodAuto($cod_manutencao); foreach($rodas AS $roda){ if($roda['cod_roda'] == $cod_auto){ return true; } } return false; } Segue o método que estou testando public function testVerificaGestor(){ $cod_auto = '900'; $cod_roda = '1200'; $rodas = Model_Dao_CarroRodas::getNomesRodasCodAuto($cod_manutencao); $this->assertEquals(false, Model_Auto::verificaAutomovel($cod_auto, $cod_rodas)); } Alguém poderia ajudar?
-
Pessoal, Preciso de uma função para inverter uma fila Segue o que eu consegui até agora #include <stdio.h> #include <stdlib.h> #include "fila.h" void inverte (Fila *f) { Fila p; p.inicio=f->inicio; p.fim=f->fim; for (int i=p.inicio; i<p.fim; i++) p.itens[i] = retira_fila(&f); for (int i=p.inicio; i<p.fim; i++) insere_fila(&f, retira_pilha(&p)); } main() { Fila* f1 = fila_cria(); Fila* f5 = fila_cria(); Fila* finverte; fila_insere(f1, 2.1); fila_insere(f1, 4.5); fila_insere(f1, 1.0); printf("\n\nFila f1:\n"); fila_imprime(f1); finverte = inverte_fila(f1); printf("\n\nFila f4:\n"); fila_imprime(finverte); //fila_libera(f4); fila_libera(f1); getch(); } Só que esta com erro e só pode utilizar fila não pode usar o principio de pilha Alguém poderia me ajudar?
-
Fazer uma função para inverter uma lista Estou com problemas para inverter uma lista #include <stdio.h> #include <stdlib.h> typedef struct lista { int info; struct lista* prox; } Lista; Lista* lista_cria() { return NULL; } Lista* lista_insere (Lista* l, int i) { Lista* novo = (Lista*) malloc(sizeof(Lista)); novo->info = i; novo->prox = l; return novo; } void lista_imprime (Lista* l) { Lista* p; /* variavel auxiliar para percorrer a lista */ for (p = l; p != NULL; p = p->prox) printf("info = %d\n", p->info); } /* função separa */ Lista* inverte (Lista* l) { Lista* p; /* variável auxiliar para percorrer a lista */ Lista* q; /* variável auxiliar para nova lista */ int aux; for (p = l; p != NULL; p = p->prox) if (p->info == NULL) { aux = p->prox; p->prox = NULL; return p; } } main() { Lista* l; int n; l = lista_cria(); l = lista_insere(l, 23); l = lista_insere(l, 45); l = lista_insere(l, 67); l = lista_insere(l, 89); l = lista_insere(l, 1011); printf("\nLista:\n"); lista_imprime(l); printf("\n***Invertendo a lista***\n"); Lista_inverte(l); printf("\nLista depois da inversao:\n"); lista_imprime(l); getch(); } Alguém poderia me ajudar?
-
Fazer uma função que compare se os caracteres de uma lista l1 e igual aos caracteres da lista l2 Segue o que tentei fazer #include <stdio.h> #include <stdlib.h> typedef struct lista { int info; struct lista* prox; } Lista; Lista* lista_cria() { return NULL; } Lista* lista_insere (Lista* l, int i) { Lista* novo = (Lista*) malloc(sizeof(Lista)); novo->info = i; novo->prox = l; return novo; } void lista_imprime (Lista* l) { Lista* p; for (p = l; p != NULL; p = p->prox) printf("info = %d\n", p->info); } int igual (Lista* l1, Lista*l2) { Lista* p1; Lista* p2; for (p1 = l1,p2=l2; p1 != NULL&& p2 != NULL; p1 = p1->prox,p2=p2->prox) { if (p1->info != p2->info) return 0; } return p1==p2; } Lista* lista_libera (Lista* l) { Lista* p = l; while (p != NULL) { Lista* t = p->prox; free(p); p = t; } return NULL; } main() { Lista* l; Lista* l2; int n; l = lista_cria(); l = lista_insere(l, 23); l = lista_insere(l, 45); l = lista_insere(l, 67); l = lista_insere(l, 89); l = lista_insere(l, 1011); printf("\nLista original:\n"); lista_imprime(l); l2 = lista_insere(l, 30); l2 = lista_insere(l, 44); l2 = lista_insere(l, 69); l2 = lista_insere(l, 90); l2 = lista_insere(l, 1013); printf("\nLiberando a memoria...\n"); l = lista_libera(l); printf("\nVerifica se os caracteres são iguais:\n"); igual(l1,l2); getch(); }
-
Fazer uma função que recebendo duas listas por parâmetro retorne a lista que intercala estas duas listas. E devera usar o prótotipo Lista* merge(Lista*l1, Lista*l2); Eu tentei fazer desta maneira #include <stdio.h> #include <stdlib.h> typedef struct lista { int info; struct lista* prox; } Lista; Lista* lista_cria() { return NULL; } Lista* lista_insere (Lista* l, int i) { Lista* novo = (Lista*) malloc(sizeof(Lista)); novo->info = i; novo->prox = l; return novo; } void lista_imprime (Lista* l) { Lista* p; /* variavel auxiliar para percorrer a lista */ for (p = l; p != NULL; p = p->prox) printf("info = %d\n", p->info); } /* função separa */ Lista* merge (Lista* l1, Lista*l2) { Lista* p; /* variável auxiliar para percorrer a lista */ Lista* q; /* variável auxiliar para nova lista */ for (p = l1; p != NULL; p = p->prox) if (p->info == n) { q = p->prox; p->prox = NULL; return q; } return NULL; } Lista* lista_libera (Lista* l) { Lista* p = l; while (p != NULL) { Lista* t = p->prox; /* guarda referencia para prox elto */ free(p); /* libera a memoria apontada por p */ p = t; /* faz p apontar para proximo elto */ } return NULL; } main() { Lista* l; Lista* l2; int n; l = lista_cria(); l = lista_insere(l, 23); l = lista_insere(l, 45); l = lista_insere(l, 67); l = lista_insere(l, 89); l = lista_insere(l, 1011); printf("\nLista original:\n"); lista_imprime(l); //criando e imprimindo a lista l2 //l2 = lista_cria(); l2 = lista_insere(l, 30); l2 = lista_insere(l, 44); l2 = lista_insere(l, 69); l2 = lista_insere(l, 90); l2 = lista_insere(l, 1013); printf("\nLiberando a memoria...\n"); l = lista_libera(l); printf("\nLista depois da juncao:\n"); merge(l1,l2); getch(); } Só que esta com erro na hora de imprimir a lista com merge Alguém poderia ajudar?
-
Felipe Refiz o código utilizando a sua lógica e agora esta com erro no total de linhas e colunas nulas #include <stdio.h> #include <stdlib.h> int main( ) { int linhas,colunas, i, j; int ln, cn; int nulo; int cont; //Inicialização das variáveis ln = 0; cn = 0; /*Entrar com a dminsão da matriz desejada*/ printf("Entre com o numero de linhas: "); scanf("%d",&linhas); printf("Entre com o numero de colunas: "); scanf("%d",&colunas); /*declaração das matrizes que serão usadas no programa*/ int A[linhas][colunas]; /*laço de repetição para entrar com os valores da matriz 1*/ for (i=0; i<linhas; i++) for(j=0; j<colunas; j++) { printf(" Entre com os elementos da matriz 1 [%d][%d]:",i+1,j+1); scanf("%d",&A[i][j]); } /*laço */ for (i=0; i<linhas; i++) nulo = 1; for(j=0; j<colunas; j++) { if (A[i][j] =! 0) nulo = 0; if (nulo==1) cont = cont + 1; } /*laço 2*/ for (i=0; i<linhas; i++) { nulo = 1; for(j=0; j<colunas; j++) if (A[i][j] =!0) nulo = 0; if (nulo ==1) cont = cont + 1; } /*Mostra a matriz 1 criada*/ printf("\n\nA matriz A criada é: \n\n"); for (i=0; i<linhas; i++) { for(j=0; j<colunas;j++) printf("%3.d\t",A[i][j]); printf("\n\n"); } printf("A matriz apresenta %d nulas ",cont); printf("\n\n\n"); getch(); return 0; }
-
Fiz algumas modificações mas agora o erro e de lopping infinito #include <stdio.h> #include <stdlib.h> int main( ) { int linhas,colunas, i, j; int somaDP, somaDS, calculaSD, somaLinhas, somaColunas; //Inicialização das variáveis somaDP = 0; somaDS = 0; calculaSD = 0; somaLinhas = 0; somaColunas = 0; int somainicial=0; int somainicial1 = 0; int somainicial2 = 0; int somainicial3 = 0; int somainicial4 = 0; int somainicial5 = 0; int verdadeiro=1; /*Entrar com a dminsão da matriz desejada*/ printf("Entre com o numero de linhas: "); scanf("%d",&linhas); printf("Entre com o numero de colunas: "); scanf("%d",&colunas); /*declaração das matrizes que serão usadas no programa*/ int mat1[linhas][colunas]; /*laço de repetição para entrar com os valores da matriz 1*/ for (i=0; i<linhas; i++) for(j=0; j<colunas; j++) { printf(" Entre com os elementos da matriz 1 [%d][%d]:",i+1,j+1); scanf("%d",&mat1[i][j]); } for (i=0; i<linhas; i++) { for(j=0; j<colunas; j++) { //somando a diagonal principal if (i==j) somaDP +=mat1[i][j]; printf("\nsoma da diagonal principal %d\n\n",somaDP); //somando a diagonal principal if(j=i-2) somaDS=+mat1[i][j]; printf("\nsoma da diagonal secundaria %d\n\n",somaDS); } } //somando a 1 coluna for (i=0; i<colunas; i++) somainicial +=mat1[i][0]; printf("\nsoma da coluna 1 %d\n\n",somainicial); //somando a 2 coluna for (i=0; i<colunas; i++) somainicial1 +=mat1[i][1]; printf("\nsoma da coluna 2 %d\n\n",somainicial1); //somando a 3 coluna for (i=0; i<colunas; i++) somainicial2 +=mat1[i][2]; printf("\nsoma da coluna 3 %d\n\n",somainicial2); //somando a 1 linha for (i=0; i<linhas; i++) somainicial3 +=mat1[0][j]; printf("\nsoma da linha 1 %d\n\n",somainicial3); //somando a 2 linha for (i=0; i<linhas; i++) somainicial4 +=mat1[1][j]; printf("\nsoma da linha 2 %d\n\n",somainicial4); //somando a 3 linha for (i=0; i<linhas; i++) somainicial5 +=mat1[2][j]; printf("\nsoma da linha 3 %d\n\n",somainicial5); //testando as colunas for (i=0; i<linhas; i++){ somaColunas=0; for(j=0; j<colunas; j++) { somaColunas+= mat1[i][j]; } if(somaColunas!=somainicial) verdadeiro=0; } /*Mostra a matriz 1 criada*/ if(verdadeiro==1) printf("\n\nA matriz 1 criada é: quadrado magico \n\n"); else printf("\n\nA matriz 1 criada não é: quadrado magico \n\n"); for (i=0; i<linhas; i++) { for(j=0; j<colunas;j++) printf("%3.d\t",mat1[i][j]); printf("\n\n"); } printf("\n\n\n"); getch(); return 0; } Eu não conhecia o operando "+=", mas, pelo que eu percebi, seria isso: "a = a + b " é igual a " a += b", certo? se for isso, acho que ta errada a utilização do +=... !! E... nesse caso, percebe, você ta percorrendo a matriz INTEIRA, e armazenando tanto em "somaLinhas" como em "somaColunas" o valor de todos os elementos da matriz somados! e não é isso que você tem que fazer! Como TODAS as somas de linhas tem que ser iguais, eu sugeriria algo assim, com "magico" sendo uma variavel indicadora de passagem. O pensamento é partir do principio que esse é, sim, um quadrado mágico, e, caso encontrarmos alguma condição que diga o contrario, podemos parar de fazer todas as contas e dizer que o quadrado não é magico! portanto, o que eu sugeriria pro caso da "somaLinhas" (e que pra "somaColunas" seria equivalente): magico = 1; // 1 = SIM -> estou supondo que o quadrado é magico nmagico = 0; //nmagico vai ser o meu "numero magico". Vou supor que a primeira soma da primeira linha é o nmagico. Se for um quadrado magico, minha suposicao não estará errada! for(j=0; j<colunas; j++) { nmagico = nmagico + mat1[0][j]; } for (i=1; i<linhas && magico==1; i++) { somaLinhas = 0; for(j=0; j<colunas; j++) { somaLinhas = somaLinhas + mat1[i][j]; } if (nmagico != somaLinhas) magico = 0; // Aqui, descobri que o quadrado não é magico, e mudo a variavel indicadora de passagem para 0 ( 0 = não ) } Daí, a partir desse ponto, você não precisa mais do primeiro for que eu fiz, pra achar o nmagico. Caso todas as "somaLinha" sejam iguais a "nmagico", você passa pras colunas, faz a soma dos elementos das colunas, no final de cada soma compara com "nmagico", e não se esqueça de zerar "somaColunas" antes de iniciar cada soma! Depois disso, soma a diagonal principal, e... bom, pra diagonal secundaria temos um probleminha! Pra começar, e voltando um pouco, se estamos falando de quadrados, não precisamos de uma variavel "linhas" e outra "colunas", uma vez que esse numero é igual! portanto, apenas pegar um "n" para o quadrado, e usar esse numero como o numero maximo de linhas e de colunas já é o suficiente! Dai, é só percorrer a matriz toda e perguntar if (i==j) somaDP += mat1[i][j]; if(j=i-2) somaDS=+mat1[i][j]; Então, essa segunda condicao ta errada, não? a conficao certa seria if (j + i= n) // ou if (j = n-i) Não sei de onde você tirou esse "j = i-2", mas enfim, o certo seria isso daí que eu postei! E, de resto, voce pode colocar, como adendo, em todas as condições analisadas, um " && magico ==1", pois caso voce ache, em algum ponto do programa, que não é um quadrado mágico, então todas as comparações e contas podem ser deixadas de lado, e na hora de imprimir se é um quadrado magico ou não, basta perguntar "if (magico ==1)"
-
Desenvolver um programa que dada uma matriz qualquer de n linhas e m colunas dizer se a mesma e um quadrado mágico. Lembrando que em um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todas iguais. E o programa não pode ser feito utilizando alocação dinâmica Segue o que tentei fazer: #include <stdio.h> #include <stdlib.h> int main( ) { int linhas,colunas, i, j; int somaDP, somaDS, calculaSD, somaLinhas, somaColunas; //Inicialização das variáveis somaDP = 0; somaDS = 0; calculaSD = 0; somaLinhas = 0; somaColunas = 0; /*Entrar com a dminsão da matriz desejada*/ printf("Entre com o numero de linhas: "); scanf("%d",&linhas); printf("Entre com o numero de colunas: "); scanf("%d",&colunas); /*declaração das matrizes que serão usadas no programa*/ int mat1[linhas][colunas]; /*laço de repetição para entrar com os valores da matriz 1*/ for (i=0; i<linhas; i++) for(j=0; j<colunas; j++) { printf(" Entre com os elementos da matriz 1 [%d][%d]:",i+1,j+1); scanf("%d",&mat1[i][j]); } /*laço para somar as linhas*/ for (i=0; i<linhas; i++) for(j=0; j<colunas; j++) { somaLinhas = somaLinhas + mat1[i][j]; somaColunas += somaColunas + mat1[i][j]; //condições if (i==j) somaDP += mat1[i][j]; if(j=i-2) somaDS=+mat1[i][j]; } //verifica se a soma é igual if (somaDP == somaDS && somaLinhas == somaColunas) printf("E quadrado"); else if (somaDP!= somaDS) printf("não é quadrado"); /*Mostra a matriz 1 criada*/ printf("\n\nA matriz 1 criada é: \n\n"); for (i=0; i<linhas; i++) { for(j=0; j<colunas;j++) printf("%3.d\t",mat1[i][j]); printf("\n\n"); } printf("\n\n\n"); getch(); return 0; } O programa da erro de execução quando vai imprimir a matriz e não mostra se e um quadrado magico. Alguém poderia ajudar?
-
Fazer um programa que dada uma matriz qualquer de n linhas e m colunas fazer um programa que imprima o número de linhas e o número de colunas nulas da matriz. E este programa deverá ser feito sem alocação dinâmica de matrizes Segue o que tentei fazer: #include <stdio.h> #include <stdlib.h> int main( ) { int linhas,colunas, i, j; int ln, cn; //Inicialização das variáveis ln = 0; cn = 0; /*Entrar com a dminsão da matriz desejada*/ printf("Entre com o numero de linhas: "); scanf("%d",&linhas); printf("Entre com o numero de colunas: "); scanf("%d",&colunas); /*declaração das matrizes que serão usadas no programa*/ int A[linhas][colunas]; /*laço de repetição para entrar com os valores da matriz 1*/ for (i=0; i<linhas; i++) for(j=0; j<colunas; j++) { printf(" Entre com os elementos da matriz 1 [%d][%d]:",i+1,j+1); scanf("%d",&A[i][j]); } /*verificar linha nula*/ if (A[i] == 0) ln = ln + 1; /*verificar coluna nula*/ if (A[j] == 0) cn = cn + 1; if (ln > 0 && cn >0) printf("O número de linhas e colunas nulas é [%d] e [%d]\n\n",ln,cn); else printf("A matriz não apresenta linhas e colunas nulas\n\n"); /*Mostra a matriz 1 criada*/ printf("\n\nA matriz A criada é: \n\n"); for (i=0; i<linhas; i++) { for(j=0; j<colunas;j++) printf("%3.d\t",A[i][j]); printf("\n\n"); } printf("\n\n\n"); getch(); return 0; } A saida esperada e: A matriz apresenta 2 linhas nulas e 1 coluna nula. No entanto se eu entro com uma matriz de ordem 2,3 e com uma linha nula o programa não informa se apresenta linha ou coluna nule e também não paresenta a matriz impressa corretamente. Alguém poderia me ajudar?
-
Fiz as correções e o programa agora esta erro para colocar a matrícula do aluno #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX 2 struct aluno { char nome[81]; int matricula[8]; char turma; float p1; float p2; float p3; }; typedef struct aluno Aluno; Aluno* turmas[MAX]; void inicializa (int n, Aluno** turmas) /*funçãos para imprimir os aprovados*/ { int i; for (i=0; i<n; i++) turmas[i] = NULL; } void preenche (int n, Aluno** turmas, int i) { if (i<0 || i>=n) { printf("Indice fora do limite do vetor\n"); exit(1); } if (turmas[i]==NULL) turmas[i] = (Aluno*)malloc(sizeof(Aluno)); printf("Entre com o nome\n"); scanf("%c", &turmas[i]->nome); printf("Entre com a matricula\n"); scanf("%d", &turmas[i]->matricula); printf("Entre com a turma\n"); scanf("%c", &turmas[i]->turma); printf("Entre com a primeira nota\n"); scanf("%f", &turmas[i]->p1); printf("Entre com a segunda nota\n"); scanf("%f", &turmas[i]->p2); printf("Entre com a terceira nota\n"); scanf("%f", &turmas[i]->p3); } void imprime (int n, Aluno** turmas, int i) { if (i<0 || i>=n) { printf("Indice fora do limite do vetor\n"); exit(1); } if (turmas[i]!=NULL) { printf("\n\nMatricula: %d\n", turmas[i]->matricula); printf("\n\nNome: %s\n", turmas[i]->nome); printf("\n\nTurma: %s\n", turmas[i]->turma); printf("\n\n"); } } void imprime_aprovados (int n, Aluno** turmas) { int i; float media; float p1,p2,p3; media = (p1+p2+p3)/3; for (i=0; i<n; i++) { if (media>6.0) { imprime(n,turmas,i); } } } /*programa principal*/ main() { Aluno* turmas[10]; preenche(10,turmas,0); imprime_aprovados(10,turmas); system("pause"); return 0; }
-
O programa deverá cadastrar alunos de uma determinada disciplina e devera ser implementada uma função que imprima o número de matrícula, o nome, a turma e a média de todos os alunos aprovados na disciplina. E deverá seguir o seguinte modelo de estrutura struct aluno { char nome[81]; char matricula[8]; char turma; float p1; float p2; float p3; }; E o critério de aprovação é dado pelas media das três provas (p1,p2 e p3). A função devera obedecer ao seguinte protótipo: void imprime_aprovados (int n, Aluno** turmas); E também deverá ser feita uma função para imprimir a média dos alunos de uma determinada turma. E deverá seguir o seguinte protótipo: float media_turma (int n, Aluno** turmas, char turma); Fiz o seguinte: #include <stdio.h> #include <stdlib.h> #include <conio.h> struct aluno { char nome[81]; char matricula[8]; char turma; float p1; float p2; float p3; }; typedef struct aluno Aluno; #define MAX 3 Aluno* turmas[MAX]; void inicializa (int n, Aluno** turmas) /*funçãos para imprimir os aprovados*/ { int i; for (i=0; i<n; i++) turmas[i] = NULL; } void preenche (int n, Aluno** turmas, int i) { if (i<0 || i>=n) { printf("Indice fora do limite do vetor\n"); exit(1); } if (turmas[i]==NULL) turmas[i] = (Aluno*)malloc(sizeof(Aluno)); printf("Entre com o nome"); scanf("%80[^\n]", &turmas[i]->nome); printf("Entre com a matricula"); scanf("%c", &turmas[i]->matricula); printf("Entre com a turma"); scanf("%120[^\n]", &turmas[i]->turma); printf("Entre com a primeira nota"); scanf("%f", &turmas[i]->p1); printf("Entre com a segunda nota"); scanf("%f", &turmas[i]->p2); printf("Entre com a terceira nota"); scanf("%f", &turmas[i]->p3); } void imprime (int n, Aluno** turmas, int i) { if (i<0 || i>=n) { printf("Indice fora do limite do vetor\n"); exit(1); } if (turmas[i]!=NULL) { printf("\n\nMatricula: %d\n", turmas[i]->matricula); printf("\n\nNome: %s\n", turmas[i]->nome); printf("\n\nTurma: %s\n", turmas[i]->turma); printf("\n\n"); } } void imprime_aprovados (int n, Aluno** turmas) { int i; float media; float p1,p2,p3; media = (p1+p2+p3)/3; for (i=0; i<n; i++) { if (media>6.0) { imprime(n,turmas,i); } } } /*programa principal*/ main(){ Aluno* turmas[10]; preenche(10,turmas,0); preenche(10,turmas,1); preenche(10,turmas,1); imprime_aprovados(10,turmas); system("pause"); return 0; } Só que esta com erro para cadastrar a matrícula e também no final o programa não mostra os resultado esperado que e mostrar a média dos alunos aprovados e mostrar os alunos aprovados.
-
Boa ntarde, Estou tentando criar uma matriz usando ponteiros e esta dando erro nesta linha: vetor= malloc( linhas * colunas * sizeof(int) ); segue o código do programa #include <stdio.h> #include <stdlib.h> int main(void) { int linhas, colunas, i; int *vetor, **matriz; printf("\nDigite o numero de linhas e colunas: "); scanf("%d,%d",&linhas,&colunas); vetor= malloc( linhas * colunas * sizeof(int) ); *matriz= malloc( linhas * sizeof(int) ); for(i=0;i<linhas;i++) matriz[i]= &vetor[ i * colunas]; //mostrar a matriz for (linhas=0; linhas<3; linhas++) { for (colunas=0; colunas<3; colunas++) { printf("%d", mat[linhas][colunas]); } printf("\n"); } system("pause"); free(vetor); free(matriz); return 0; } Alguém poderia me ajudar?
-
Alterei o código Mas agora esta dando erro na hora de ler o vetor #include <stdio.h> #include <stdlib.h> #include <conio.h> double avalia (double* poli, int grau, double x) { double acc = 0.0; double valor_x = 1.0; int i; for (i = 0; i < grau; i++) { acc += poli[i] * valor_x; valor_x *= x; } return acc; } int main(void) { int x,i,res,grau; double *poli; for(i = 0; i < grau; i++) { printf("Entre com o %do. coeficiente: ", i+1); scanf ("%f",&poli[i]); } poli = (double*) malloc(x*sizeof(double)); printf("O grau do polinomio é",poli); free(poli); getch(); }
-
Estou precisando de ajuda nesta questão: Implementar uma função que permita a avaliação de polinômios. Cada polinômio e definido por um vetor que contém seus coeficientes. Por exemplo, o polinômio de grau 3, 4x³+3x²+x+12, terá um vetor de coeficientes igual a v[12,1,3,4]. A função deve obedecer ao protótipo: double avalia (double* poli, int grau, double x); Onde o parâmetro poli e o vetor com os coeficientes do polinômio, grau é o grau do polinômio, e x é o valor para o qual o polinômio deve ser avaliado. Já fiz o seguinte código #include <stdio.h> #include <stdlib.h> #include <conio.h> double avalia (double* poli, int grau, double x) { double acc = 0.0; double valor_x = 1.0; int i; for (i = 0; i < grau; i++) { acc += poli[i] * valor_x; valor_x *= x; } return acc; } int main(void) { int x,i,res; int *poli; for(i = 0; i < grau; i++) { printf("Entre com o %do. coeficiente: ", i+1); scanf ("%f",&poli[i]); } poli = (double*) malloc(x*sizeof(double)); printf("O grau do polinomio é",poli); free(poli); getch(); } Mas o mesmo esta com erro nesta linha: poli = (double*) malloc(x*sizeof(double)); Alguém poderia me ajudar?
-
Estou com dificuldades em implementar um programa que através de uma chamada de função determine as raízes de uma equação de segundo grau. Segue a minha tentativa: #include<stdio.h> #include<conio.h> #include<math.h> int raizes(float a, float b, float c, float*x1, float*x2); main() { float a,b,c; float *x1; float *x2; printf ("\n\n\nInforme o valor do coeficiente a: "); scanf ("%f", &a); printf ("Informe o valor do coeficiente b: "); scanf ("%f", &b); printf ("Informe o valor do coeficiente c: "); scanf ("%f", &c); raizes(a,b,c,&x1,&x2); //chama a funcao getch(); } int raizes(float a, float b, float c, float*x1, float*x2) { float delta; float *x1; float *x2; delta=pow(b,2)-4*a*c; if(a!=0) { if (delta >=0) { *x1=(-b+sqrt(delta))/(2*a); *x2=(-b-sqrt(delta))/(2*a); printf ("\nx1=%.2f e x2=%.2f\n\n", x1, x2); } else { printf("não e possivel calcular"); } } } O compilador acusa vários erros que eu não consegui arrumar. Alguém poderia me ajudar? E o programa acusa os seguintes erros: Compilador: Default compiler Executando g++.exe... g++.exe "C:\Users\eduardo\raiz.cpp" -o "C:\Users\eduardo\raiz.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib" C:\Users\eduardo\raiz.cpp: In function `int main()': C:\Users\eduardo\raiz.cpp:19: error: cannot convert `float**' to `float*' for argument `4' to `int raizes(float, float, float, float*, float*)' C:\Users\eduardo\raiz.cpp: In function `int raizes(float, float, float, float*, float*)': C:\Users\eduardo\raiz.cpp:26: error: declaration of 'float*x1' shadows a parameter C:\Users\eduardo\raiz.cpp:27: error: declaration of 'float*x2' shadows a parameter Execução terminada
-
Consegui resolver este problema #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { float salario_minimo = 0; float folha_mensal = 0; float salario = 0; float maior_salario = 0; float media = 0; int numero_total_pecas = 0; int pecas = 0; int total_homens_a = 0; int total_homens_b = 0; int total_homens_c = 0; int total_mulher_a = 0; int total_mulher_b = 0; int total_mulher_c = 0; int total_peca_homens_a = 0; int total_peca_homens_b = 0; int total_peca_homens_c = 0; int total_peca_mulher_a = 0; int total_peca_mulher_b = 0; int total_peca_mulher_c = 0; char nome[50]; char sexo; char resposta; char operario_maior_salario[50]; printf("Informe o salario minimo:"); scanf("%f", &salario_minimo); do { printf("Nome do funcionario: "); fflush(stdin); scanf("%s", nome); printf("Pecas fabricados no mes: "); fflush(stdin); scanf("%d", &pecas); printf("Sexo do funcionario: "); fflush(stdin); scanf("%c", &sexo); numero_total_pecas = numero_total_pecas + pecas; // Classe A if ( pecas <= 30 ) { salario = salario_minimo; if ( sexo == 'M' || sexo == 'm' ) { total_homens_a = total_homens_a + 1; total_peca_homens_a = total_peca_homens_a + pecas; } else { total_mulher_a = total_mulher_a + 1; total_peca_mulher_a = total_peca_mulher_a + pecas; } } else { // Classe B if ( pecas >= 31 && pecas <= 35 ) { salario = salario_minimo + ( pecas - 30 ) * (0.03 * salario_minimo); if ( sexo == 'M' || sexo == 'm' ) { total_homens_b = total_homens_b + 1; total_peca_homens_b = total_peca_homens_b + pecas; } else { total_mulher_b = total_mulher_b + 1; total_peca_mulher_b = total_peca_mulher_b + pecas; salario = salario_minimo + pecas * (0.05 * salario_minimo); } } else { // Classe C salario = salario_minimo + ( pecas - 30 ) * (0.05 * salario_minimo); if ( sexo == 'M' || sexo == 'm' ) { total_homens_c = total_homens_c + 1; total_peca_homens_c = total_peca_homens_c + pecas; } else { total_mulher_c = total_mulher_c + 1; total_peca_mulher_c = total_peca_mulher_c + pecas; } } } folha_mensal = folha_mensal + salario; if ( salario > maior_salario ) strcpy(operario_maior_salario, nome); printf("Salario do funcionario: %0.f\n", salario); printf("Deseja inserir novos dados? S - Sim ou N - não: "); fflush(stdin); scanf("%c",&resposta); } while ( resposta != 'N' && resposta != 'n' ); printf("Folha mensal de pagamentos: %0.f\n", folha_mensal); printf("Total de peças fabricadas no mes: %0.d\n", numero_total_pecas ); media = 0; if ( total_homens_a > 0) media = (total_peca_homens_a / total_homens_a); printf("Media de pecas de homens da classe A: %0.f\n", media ); media = 0; if ( total_homens_b > 0) media = (total_peca_homens_b / total_homens_b); printf("Media de pecas de homens da classe B: %0.f\n", media ); media = 0; if ( total_homens_c > 0) media = (total_peca_homens_c / total_homens_c); printf("Media de pecas de homens da classe C: %0.f\n", media ); media = 0; if ( total_mulher_a > 0) media = (total_peca_mulher_a / total_mulher_a); printf("Media de pecas de mulheres da classe A: %0.f\n", media ); media = 0.0; if ( total_mulher_b > 0) media = (total_peca_mulher_b / total_mulher_b); printf("Media de pecas de mulheres da classe B: %0.f\n", media ); media = 0; if ( total_mulher_c > 0) media = (total_peca_mulher_c / total_mulher_c); printf("Media de pecas de mulheres da classe C: %0.f\n", media ); printf("Operario com o maior salario da empresa: %s\n", operario_maior_salario); system("pause"); return 0; } Tópico resolvido
-
Estou precisando de ajuda neste programa em C Numa fábrica trabalham homens e mulheres divididos em três classes: A – os que fazem até 30 peças por mês B – os que fazem de 31 a 35 peças por mês C – os que fazem mais de 35 peças por mês A classe A recebe salário-mínimo, a classe B recebe salário-mínimo e mais 3% do salário-mínimo por peça, acima das 30 iniciais. A classe C recebe salário mínimo e mais 5% do salário mínimo por peça acima das 30 iniciais. Fazer um algoritmo que leia o salário mínimo que é igual para todos os trabalhadores independente da classe, e em seguida: a)Leia várias linhas contendo cada uma O numero do operário O número de peças fabricadas por mês O sexo do operário b)Calcule e escreva para um conjunto de 10 funcionários: O salário de cada operário O total da folha mensal de pagamento da fábrica O número total de peças fabricadas por mês A média de peças fabricadas pelos homens em cada classe A média de peças fabricadas pelas mulheres em cada classe O numero do operário de maior salário Segue o que eu consegui implementar com erro. Os erros são: Não consigo digitar o nome do operário, os ifs estão com erro e o programa não finaliza da maneira correta. Alguém poderia me ajudar? #include <stdio.h> #include <stdlib.h> main() { float salario_minimo,folha_mensal,salario,maior_salario; int numero_total_pecas,pecas,total_homens_a,total_homens_b,total_homens_c,total_mulher_a,total_mulher_b,total_mulher_c; int total_peca_homens_a,total_peca_homens_b,total_peca_homens_c,total_peca_mulher_a,total_peca_mulher_b,total_peca_mulher_c; char nome,sexo,resposta,operario_maior_salario; numero_total_pecas = 0; folha_mensal = 0; total_homens_a = 0; total_homens_b = 0; total_homens_c = 0; total_mulher_a = 0; total_mulher_b = 0; total_mulher_c = 0; total_peca_homens_a = 0; total_peca_homens_b = 0; total_peca_homens_c = 0; total_peca_mulher_a = 0; total_peca_mulher_b = 0; total_peca_mulher_c = 0; printf("Informe o salario minimo:"); scanf("%d", &salario_minimo); do { printf("Nome do funcionario: "); scanf("%c", &nome); printf("Entre com as pecas fabricadas por mes: "); scanf("%d", &pecas); printf("Sexo do funcionario: "); scanf("%c", &sexo); numero_total_pecas = numero_total_pecas + pecas; if (pecas <= 30) salario = salario_minimo; if (sexo == 'M') { total_homens_a = total_homens_a + 1; total_peca_homens_a = total_peca_homens_a + pecas; } else total_mulher_a = total_mulher_a + 1; total_peca_mulher_a = total_peca_mulher_a + pecas; if (pecas>=31 && pecas<=35) { salario = salario_minimo + pecas * (0.03 * salario_minimo); } else salario = salario_minimo + pecas * (0.05 * salario_minimo); if (sexo == 'M') { total_homens_b = total_homens_b + 1; total_peca_homens_b = total_peca_homens_b + pecas; } else total_mulher_b = total_mulher_b + 1; total_peca_mulher_b = total_peca_mulher_b + pecas; if (sexo == 'M') { total_homens_c = total_homens_c + 1; total_peca_homens_c = total_peca_homens_c + pecas; } else total_mulher_c = total_mulher_c + 1; total_peca_mulher_c = total_peca_mulher_c + pecas; folha_mensal = folha_mensal + salario; if (salario > maior_salario) { operario_maior_salario = nome; } printf("Deseja inserir novos dados: S - Sim ou N - não:"); scanf("%c",&resposta); } while(resposta != 'N'); printf("Salario do funcionario: %f \n",salario); printf("Total da folha mensal: %f \n",folha_mensal); printf("Total de pecas fabricadas: %d \n",numero_total_pecas ); printf("Media de pecas homens classe A: %f \n",total_peca_homens_a / total_homens_a); printf("Media de pecas homens classe B: %f \n",total_peca_homens_b / total_homens_B); printf("Media de pecas homens classe C: %f \n",total_peca_homens_c / total_homens_c); printf("Media de pecas mulheres classe A:: %f \n",total_peca_mulher_a / total_mulher_a); printf("Media de pecas mulheres classe B: %f \n",total_peca_mulher_b / total_mulher_b); printf("Media de pecas mulheres classe C: %f \n",total_peca_mulher_c / total_mulher_c); printf("Nome do operario com o maior salário: %c \n ",operario_maior_salario); system("pause"); }
-
Então e que eu estou querendo transformar o seguinte algoritmo em C para Assembly { //inicio do algoritmo int A,N,SENA,T; A = 0; do { //inicio 1 if (A > 1.6) { break; } SENA = 0; T = A; N = 0; do { //inicio 2 if (T < 0.0001) { break; } SENA = SENA + T; N = N + 1; T = -T * (A * A) / (2 * N * (2 * N + 1)); } //fim do Do 2 printf("A: %f",A); printf("\n\n"); printf("SENA: %f",SENA); printf("\n\n"); printf("N: %f",N); A = A + 0.1; } //fim Do } //fim do algoritmo Fiz assim: #O registrador $t0 será usado para mostrar o valor A #O registrador $t1 será usado para mostrar o valor de SENA #O registrador $t2 será usado para mostrar o valor N .data A: .asciiz "\n A($t0:) " #mostra o valor de A SENA: .asciiz "\n SENA($t1:) " #mostra o valor de SENA N: .asciiz "\n N($t2:) " #mostra o valor de N .globl main .text main: li $t0, 0 #inicializa A com 0 loop1: #inicia o Loop 1 addi $t0,$t0,0.1 #O registrador $t0 recebe $t0 + 0.1 bgt $t0, 1.6, parar1 #se $t3 (A > 1.6) desvia para o rotulo (parar1) b loop1 # fica em looping até que o valor da soma $t0 + 0.1 seja maior que 1.6 parar1: #O registrador $t1 será usado para armazenar 0 em SENA (0 mesmo que irá mostrar o resultado no final) #O registrador $t3 será usado para armazenar o valor de A li $t1, 0 #inicializa SENA com 0 li $t3,$t3 #inicializa T com o valor calculado de A li $t2,0 #inicializa N com O loop2: blt $t3, 0.0001, parar2 #se $t3 < 0.0001 desvia para o rotulo (parar2) add $t1,$t1,$t3 #O registrador $t1 recebe a soma de $t1 com $t3 addi $t2,$t2,1 #O registrador $t2 recebe a soma de $t2 com 1 #calculo da expressão: T = -T x AxA / (2 x N x (2 x N + 1)); addi $t2, $t2,1 #N + 1 mult $t2,$t2,2 #N x 2 mult $t2,$t2,2 #N x 2 mult $t0,$t0,$t0 # $t0 = $t0,$t0 div $t3,$t0,$t2 #divide A x A por (2 x N x (2 x N + 1)) neg $t3,-1 #faz com que o registrador fique negativo b loop2 # fica em looping até que o valor da soma de $t3 seja menor que 0.0001 #Procedimentos para escrever o resultado (parar 2) li $v0, 4 la $a0, A la $a1, SENA la $a3, N syscall li $v0, 1 move $a0, $t0 move $a0, $t1 move $a0, $t2 syscall nop # Diretiva para o SO interromper a execução. Alguma “coisa” do tipo “não faça nada! ” Mas esta dando erro no código a parte da divisão eu segui o que você disse mas não consegui fazer a divisão corretamente poderia me ajudar a terminar este algoritmo em assembly?
-
Gostaria de saber como fazer para efetuar a seguinte conta no Assembly T <- -T x A² / 2 x N x (2 x N + 1) Eu sei que devo usar o add, mult e div mas não consigo colocar isto na linguagem Assembly
-
Então fiz certo Obrigado pela ajuda tópico resolvido
-
Mnemonic Fiz como você disse #Algoritmo 1 #O registrador $t0 será usado para mostrar o valor da soma (o mesmo que é utilizado para somar) .data soma: .asciiz "\n Valor calculado para soma($t0:) " .globl main .text main: #O registrador $t2 será usado para calcular a expressão da soma #O registrador $t3 será usado para calcular a expressão par li $t0, 0 #inicializa a soma com 0 li $t1, 100 #inicializa par com 100 loop: #inicia o Loop add $t0, $t0, $t1 add $t1, $t1, 2 bgt $t0, 200, parar #se $t0 (par > 200) desvia para o rotulo (done) b loop parar: #Procedimentos para escrever o resultado li $v0, 4 la $a0, soma syscall li $v0, 1 move $a0, $t0 syscall nop # Diretiva para o SO interromper a execução. Alguma “coisa” do tipo “não faça nada! ” E o PC SPin mostrou o valor da soma como sendo 202 O algoritmo deve ficar no loop até que a soma seja maior do que 200 mas creio eu que o valor e maior do que 202 como o PC Spin mostrou estou certo?
-
Corrigi mas continua dando erro <?php echo '<td class="mes"><a onclick="intLink(\''.$dia.'/'.$mes_ant.'/'.$ano_ant.'\')"> << </a></td>'; //retrocede o mes echo '<td class="mes" colspan="5"></td>'; echo '<td class="mes"><a onclick="intLink?(\''.$dia.'/'.$mes_prox.'/'.$ano_prox.'\')"> >> </a></td>'; //avança o mes ?>
-
Fiz o seguinte código para o PC SPIN Usando o editor MIPSTER 2000 .data #O registrador $t4 será usado para mostrar o valor da soma soma: .asciiz " A soma é " bye: .asciiz "\n Tchau" .globl main .text main: #O registrador $t2 será usado para calcular a expressão da soma #O registrador $t3 será usado para calcular a expressão par li $t2, 0 # Código para chamar o sistema e imprimir uma string li $t3, 100 # Carrega o endereço de <prompt> em $a0 loop: add $t2, $t2, $t3 # Armazena em $t0 a soma do conteúdi de $to e $v0 add $t3, $t3, 2 # Armazena em $t3 a soma do conteúdo de $t3 com 2 bgt $t2, 200, parar # Escreve a soma quando soma > 200 b main parar: li $v0, 4 la $a0, soma syscall li $v0, 1 move $a0, $t2 syscall end: nop Mas acho que está com erro na hora de mostrar a soma alguém poderia ajudar?
-
O erro e nesta linha <?php echo '<td class="mes"><a onclick="intLink(\"'.$dia.'/'.$mes_ant.'/'.$ano_ant.'\")"> << </a></td>'; //retrocede o mes echo '<td class="mes" colspan="5"></td>'; echo '<td class="mes"><a onclick="intLink?(\''.$dia.'/'.$mes_prox.'/'.$ano_prox.'\')"> >> </a></td>'; //avança o mes ?> E o javascript que chama a função e este: form name="navegacao" method="post"> <input type="hidden" name="mod" value="agendamentos"> <input type="hidden" name="pa" value="agendamentos"> <input type="hidden" name="data" value=""> <input type="hidden" name="rf" value=""> </form> <!-- função javascript para avançar os meses--> <script> function inLink(data){ document.navegacao.mod.value='agendamentos'; //nome do módulo document.navegacao.pa.value='agendamentos'; //página do modulo document.navegacao.rf.value=data; //navegação document.navegacao.submit(); //pagina de envio } </script> <!-- fim função javascript para avançar os meses--> Quando executa o javascript mensionado da erro dizendo que falta um "."
-
Boa tarde, Fiz o seguinte calendário em php com uma função javascript para avançar os meses e retroceder os meses mas esta dando erro no link de avançar segue o meu código O código roda mas da um erro na função javascript dizendo que o "." e esperado <?php /* * Classe de visão do módulo de agendamentos * @autor: Gustavo Rodrigues Torre * @created 08/07/2010 * @version: 0.0.4 */ require_once("../modulos/agendamentos/control/cadastro_controller.php"); //Classe contendo o controle require_once("../app/classes/bd/abstractdb.php"); //Classe abstrata para acesso ao banco ?> <style> .calendario { width: 80%; border-collapse: collapse; border: 1px solid #f0f0f0; background-color: #fff; text-align: center; } .tabela{ background:#fff; width:200px; padding:0px; border:1px solid #f0f0f0; float:left; margin-right:20px; } .mes{ background:#fff; width:auto; height:20px; text-align:center; } caption { padding: 5px 0 5px 0; font: small-caps bold 11px verdana, arial, tahoma; background-color: #999; border: 1px solid #333; } th { background: #F4F4F4; } th, td { padding: 3px; } </style> <?php if(empty($_GET['data'])){ $dia = date('d'); $mes = ltrim(date('m'),"0"); $ano = date('Y'); }else{ $data = explode('/',$_GET['data']); $dia = $data[0]; $mes = $data[1]; $ano = $data[2]; } if($mes==1){ $mes_ant = 12; $ano_ant = $ano - 1; }else{ $mes_ant = $mes - 1; $ano_ant = $ano; } if($mes==12){ $mes_prox = 1; $ano_prox = $ano + 1; }else{ $mes_prox = $mes + 1; $ano_prox = $ano; } $domingo = "style=color:#C30;"; $hoje = "style=color:#CC0;"; $pdianu = mktime(0,0,0,$mes,1,$ano); $a = date('D', $pdianu); function meses($a) { switch($mes.$a) { case 1: $mes = "janeiro"; break; case 2: $mes = "fevereiro"; $bi = $ano % 4; if($bi == 0){ $a = 29; }else{ $a = 28; } break; case 3: $mes = "março"; break; case 4: $mes = "abril"; break; case 5: $mes = "maio"; break; case 6: $mes = "junho"; break; case 7: $mes = "julho"; break; case 8: $mes = "agosto"; break; case 9: $mes = "setembro"; break; case 10: $mes = "outubro"; break; case 11: $mes = "novembro"; break; case 12: $mes = "dezembro"; break; } return $mes; } ?> <table border="0" summary="Calendário" class="calendario"> <caption><center><?php echo "".meses($mes)." ".$ano.""; ?></center></caption> <thead> <?php echo '<td class="mes"><a onclick="intLink(\"'.$dia.'/'.$mes_ant.'/'.$ano_ant.'\")"> << </a></td>'; //retrocede o mes echo '<td class="mes" colspan="5"></td>'; echo '<td class="mes"><a onclick="intLink?(\''.$dia.'/'.$mes_prox.'/'.$ano_prox.'\')"> >> </a></td>'; //avança o mes ?> <tr> <th abbr="Domingo" title="Domingo"><b <?php echo("$domingo");?>>Domingo</b></th> <th abbr="Segunda" title="Segunda"><b>Segunda</b></th> <th abbr="Terça" title="Terça"><b>Terça</b></th> <th abbr="Quarta" title="Quarta"><b>Quarta</b></th> <th abbr="Quinta" title="Quinta"><b>Quinta</b></th> <th abbr="Sexta" title="Sexta"><b>Sexta</b></th> <th abbr="Sábado"title="Sábado"><b>Sábado</b></th> </tr> </thead> <tbody> <?php $Data = strtotime($mes."/".$dia."/".$ano); $Dia = date('w',strtotime(date('n/\1\/Y',$Data))); $Dias = date('t',$Data); for ($i=1,$d=1;$d<=$Dias;) { echo("<tr>"); for ($x=1;$x<=7 && $d <= $Dias;$x++,$i++) { if ($i > $Dia) { $destaque = ''; if ($x == 1) { $destaque = $domingo; } if ($d == $dia) { $destaque = $hoje; } if (($x == 1) && ($d == $dia)) { $destaque = $hoje; } echo("<td ".$destaque.">".$d++."</td>"); } else { echo("<td> </td>"); } } for (;$x<=7;$x++) { echo("<td></td>"); } echo("</tr>"); } ?> </tbody> </table> <form name="navegacao" method="post"> <input type="hidden" name="mod" value="agendamentos"> <input type="hidden" name="pa" value="agendamentos"> <input type="hidden" name="data" value=""> <input type="hidden" name="rf" value=""> </form> <!-- função javascript para avançar os meses--> <script> function inLink(data){ document.navegacao.mod.value='agendamentos'; //nome do módulo document.navegacao.pa.value='agendamentos'; //página do modulo document.navegacao.rf.value=data; //navegação document.navegacao.submit(); //pagina de envio } </script> <!-- fim função javascript para avançar os meses--> <script> function inLink2(regiaofiscal){ document.navegacao.mod.value='agendamentos'; document.navegacao.pa.value='agendamentos2'; document.navegacao.rf.value=regiaofiscal; document.navegacao.submit(); } </script> <?php $objUtil = new UtilView(); $arrAgendamentosPrevistos = $objController->mostrarAgendamentos(); $arrTmp = array(); foreach($arrAgendamentosPrevistos as $arrSaida){ $intAgendamentos = $arrSaida['idagendamento']; $arrSaida['Sala']="<a onclick='inLink2(\"".$arrSaida['idagendamento']."\")'>".$arrSaida['data_ini'].$arrSaida['data_fim'].$arrSaida['ad_usuarios_nome_logon'].$arrSaida['sala']."</a>"; unset($arrSaida['idagendamento']); unset($arrSaida['data_ini']); unset($arrSaida['data_fim']); unset($arrSaida['ad_usuarios_nome_logon']); unset($arrSaida['sala']); array_push($arrTmp,$arrSaida); }//foreach //mostra a tabela $objUtil->drawTabela($arrTmp); ?> Alguém poderia ajudar?