Ir ao conteúdo

Ajuda em C


Kodiak

Posts recomendados

Postado

Boa Noite pessoal. Eu to começando a aprender linguagem C e to com dúvidas em dois exercícios

1- Esse aqui, é para trocar letras, eu entro cum uma palavra e duas letras. O programa vai ler a palavra e trocar a letra original pela nova.

Problema que meu compilador está dando uns warnings que eu não entendo

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

char* troca_letra (char* str, char original, char novo)

{

char* novo_v;

int i;

int tam=0;

for (i=0;str!="/0";i++)

{

tam++;

}

novo_v=(char*)malloc ((char)*sizeof(tam+1));

for(i=0;i<tam;i++)

{

if(str==original)

novo_v==novo;

else

novo_v==str;

}

novo_v="/0";

return novo_v;

}

: In function `troca_letra':

11: warning: comparison between pointer and integer

15: error: invalid type argument of `unary *'

27: warning: assignment makes integer from pointer without a cast

20: warning: statement with no effect

24: warning: statement with no effect

2-Esse exercicio eu nem sei por onde começar

Implemente a função deriva, que calcula a derivada de um polinômio. Cada polinômio é definido por um vetor contendo seus coeficientes. Por exemplo, o polinômio de grau2, 3x2+2x+12, terá um vetor de coeficientes igual a v[ ] = {12, 2, 3}. A função deriva

deve obedecer o protótipo:

void deriva(double * poli, int grau, double * out);

Onde o parâmetro poli é o vetor com os coeficientes do polinômio a ser derivado, grau é o grau desse polinômio, e out é o vetor no qual a função deve guardar os coeficientes do polinômio resultante da derivada.

valeu pessoal.

  • Membro VIP
Postado

Corrigi e expliquei os erros, diga se tiver alguma dúvida:

char* troca_letra (char* str, char original, char novo)

{

char* novo_v;

int i;

int tam=0;

for (i=0;str!='\0';i++); //\0 é o char 0, /0 são dois char, um '/' e um '0'

{

tam++;

}

novo_v=(char*)malloc ((char*)sizeof(tam+1));/*(char*) converte para ponteiro de char, (char)* da erro.*/

for(i=0;i<tam;i++)

{

if(str==original)

novo_v=novo;

else

novo_v=str; //= é o operador de atribuição, == é o operador de comparação.

}

novo_v="/0";

return novo_v;

}

Sobre o exercício 2 ele não é tão difícil assim, pense um pouco, tente fazer com papel e caneta para assim ter algum ponto de partida.

Postado

cara eu não sei se consegui.

void deriva(double * poli, int grau, double * out)

{

int j=0;

double out[100];

for(j=0; j<grau;j++)

&out[j] = poli[j]*j;

}

só que eu defini o tamanho do vetor para que ele tenha espaço suficiente

não to achando fácil não :unsure::muro:

  • Membro VIP
Postado


double out[100];

Isso não deveria estar dentro da função, da pra assumir que quem chamar a função ja vai ter alocado espaço suficiente.

De resto,


for(j=0; j<grau;j++)
&out[j] = poli[j]*j;

O & ta sobrando, uma função de primeiro grau tem 2 elementos e sendo que n*0 = 0 não ha necessidade de fazer um dos elementos, deixe apenas:


for(j=0; j<grau;j++)
out[j] = poli[j[B]+1[/B]]*j;//pular o elemento que seria eliminado.

Alguem que chamasse essa função poderia fazer:


double v[] = {12, 2, 3};//segundo grau
double derivada[2];//um elemento a menos
deriva(v, 2, derivada);//os valores da derivada devem estar na variavel derivada agora.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...