Ir para conteúdo
Fórum Script Brasil

RS25

Membros
  • Total de itens

    25
  • Registro em

  • Última visita

Sobre RS25

RS25's Achievements

0

Reputação

  1. RS25

    Ajuda - Teste Unitário

    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?
  2. RS25

    Inverter Fila

    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?
  3. 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?
  4. 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(); }
  5. 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?
  6. 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; }
  7. 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)"
  8. 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?
  9. 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?
  10. 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; }
  11. 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.
  12. 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?
  13. 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(); }
  14. 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?
  15. 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
×
×
  • Criar Novo...