Ir ao conteúdo
  • Cadastre-se

lunalovegood

Membro Pleno
  • Posts

    33
  • Cadastrado em

  • Última visita

  1. Consegui "resolver" dessa maneira, mas dessa forma o método __str__ fica quase inútil, pois não imprime mais os resultados da soma e da multiplicação. Continuo sem entender a dúvida anterior. class Complexo: def __init__(self, a, b): self.real = a self.imag = b print(self) def soma(self, a, b, c, d): print ("Soma = %2.f + %2.fi"%(a+c, b+d)) def mult(self, a, b, c, d): print ("Multiplicação = %2.f + %2.fi"%(a*c - b*d, a*d + b*c)) def __str__(self): s = "%2.f + %2.fi"%(self.real, self.imag) return s print ("Complexo 1 = ", end="") c1 = Complexo(2, 3) print ("Complexo 2 = ", end="") c2 = Complexo(4, 5) c1.soma(c1.real, c1.imag, c2.real, c2.imag) c1.mult(c1.real, c1.imag, c2.real, c2.imag)
  2. Boa tarde, fiz esse código que opera números complexos usando Python, estou começando a usar POO e surgiu uma dúvida: até a parte da soma ele calcula e imprime tudo corretamente, mas quando chega na parte da multiplicação os valores de c1.real e c1.imag estão mudados. Ao invés de continuarem com os valores 2 e 3, eles passam a ser o resultado calculado na soma, 6 e 8, isso faz com que a multiplicação dê -16 + 62i ao invés de -7 + 22i. Colocar (c1.real, c1.imag) = (2, 3) antes de calcular a multiplicação foi a solução que encontrei, mas não entendo porque os valores dessas duas variáveis foram trocados pelos de soma. Como consertar isso sem ser pela gambiarra que fiz? Obrigada. class Complexo: def __init__(self, a, b): self.real = a self.imag = b print(self) def soma(self, a, b, c, d): self.real = a+c self.imag = b+d return (self) def mult(self, a, b, c, d): self.real = ((a*c) - (b*d)) self.imag = ((a*d) + (b*c)) return (self) def __str__(self): s = "%2.f + %2.fi"%(self.real, self.imag) return s print ("Complexo 1 = ", end="") c1 = Complexo(2, 3) print ("Complexo 2 = ", end="") c2 = Complexo(4, 5) print ("Soma =", c1.soma(c1.real, c1.imag, c2.real, c2.imag)) #(c1.real, c1.imag) = (2, 3) print ("Multiplicação =", c1.mult(c1.real, c1.imag, c2.real, c2.imag))
  3. Bom dia, estou começando a aprender agora sobre programação em C++ e está sendo bem confuso A proposta é: Projetar um TAD para um círculo, ele é definido por meio do raio e as operações são: construtor de um objeto círculo, função que calcula sua área e seu perímetro. #include<iostream>#define PI 3.1415using namespace std;//classe circulo formada pelas variáveis private e public, e as funçõesclass circulo{ //variáveis private: float raio; public: circulo (float r=0); //construtor - se o usuário não digitar o valor do raio posteriormente, continuará sendo 0 //escopo de funções float area(); float perimetro(); float getraio();};//construtor (aloca memória)circulo::circulo(float r) //coloca sempre a classe antes{ raio=r;}//cálculo da áreafloat circulo::area() //tipo classe::função{ float a; a=PI*raio*raio; return a;}//cálculo do perímetrofloat circulo::perimetro(){ float p; p=2*PI*raio; return p;}//pegar o raio do círculofloat circulo::getraio(){ cout<<"Digite o raio do circulo: "; cin>>raio; return raio;}//principalint main(){ circulo c1; cout<<"Raio do circulo: "<<getraio()<<endl; cout<<"Area do circulo: "<<area()<<endl; cout<<"Perimetro do circulo: "<<perimetro()<<endl; system("pause"); return 0;} O Dev C++ aponta erro na função main, dizendo que as funções getraio() area() e perimetro() não foram declaradas, como não foram declaradas sendo que estão dentro da classe circulo e também já foram definidas lá em cima com suas ações correspondentes? Agradeço.
  4. @LNW agora funcionou certinho, muito obrigada
  5. Boa tarde, o exercício diz: Defina um registro para armazenar os dados (nome, sobrenome, RG, salário) de um empregado em uma empresa. Use um ponteiro para acessar cada atributo. Apresente os dados armazenados. Estou com dificuldade em criar um ponteiro para a struct, o código abaixo está dando falha de segmentação, imagino que só pode estar dando isso porque não estou sabendo definir o ponteiro corretamente. Já tentei também colocar o struct dados *p; dentro da própria struct dados, mas o erro continua o mesmo e eu não sei como consertar, preciso de ajuda. Obrigada. #include<stdio.h>#include<stdlib.h>int main(){ struct dados { char nome[20], sobrenome[40]; int rg; float salario; }; struct dados *p; printf ("Digite o primeiro nome do funcionario: "); scanf("%s", &p->nome); printf ("\nDigite o ultimo nome do funcionario: "); scanf("%s", &p->sobrenome); printf ("\nDigite o RG do funcionario: "); scanf("%d", &p->rg); printf ("\nDigite o salario do funcionario: "); scanf("%f", &p->salario); printf ("\n\n\nApresentacao dos dados:"); printf ("\nNome do funcionario: %s %s", p->nome, p->sobrenome); printf ("\nRG: %d", p->rg); printf ("\nSalario: %f", p->salario); system("pause"); return 0;}
  6. Obrigada! Era isso mesmo, com a biblioteca <time.h> o programa funciona perfeitamente. Mas ainda não entendi o por que de adicionar ela, qual função que eu estou usando no meu programa se faz necessária a <time.h>?
  7. /* Implemente a estrutura do algoritmo Shell Sort apresentada em aula, considerando que o arquivo processado tenha 10 elementos. A entrada de dados deve ser realizada com vetor do tipo int, gerado aleatoriamente. */#include<stdio.h>#include<stdlib.h>int shellsort(int v[10], int size) { int i , j , value, gap = 1; while(gap < size) { gap = 3*gap+1; } while ( gap > 1) { gap /= 3; for(i = gap; i < size; i++) { value = v[i]; j = i - gap; while (j >= 0 && value < v[j]) { v[j + gap] = v[j]; j -= gap; } v[j+gap] = value; } } //apresentação do resultado printf ("\n\nVetores ordenados:"); for (i=0; i<10; i++) printf ("\nv[%d] = %d", i, v[i]); printf("\n\n"); return 0;}int main(){ int v[10], i=0, size=10; //distância (h), com início em 1 - define a distância máxima para ordenação //gerar 10 números aleatórios que podem ser de 0 até 1000 printf ("Vetores gerados automaticamente:"); srand(time(NULL)); //(time(NULL)) para os numeros serem diferentes cada vez que é executado for (i=0; i<10; i++) { v[i] = rand() % 1000; //atribui os valores aleatoriamente e automaticamente ao vetor printf("\nv[%d] = %d ", i, v[i]); } shellsort(v, size); system("pause");return 0;} Bom dia, o programa acima compila (estou usando DEV) mas o Shell Sort não está ordenando nada, alguém sabe o por quê? Obrigada desde já.
  8. Meu deus, o erro estava na minha cara e eu não enxerguei hahahaha Obrigada
  9. Vou tentar te explicar, o que eu aprendi foi assim: - quando vamos ler apenas um caractere, usamos %c; - quando vamos ler mais de um caractere, usamos %s; No seu caso, é um caractere só, mas sabemos que quando iniciamos um programa com caracteres, pode ser que a variável que você chamou de "op" esteja com lixo eletrônico armazenado, então o sistema pensa que são mais de um digito (o lixo armazenado e a opção que o usuário digita). Para limpar o buffer e excluir esse lixo, usamos fflush(stdin); uma linha antes que o usuário digite a opção desejada. Se você deixar assim: printf("(a) para adição\n"); printf("(s) para subtração\n"); printf("(d) para divisão\n"); printf("(m) para multiplicação\n"); fflush(stdin);scanf("%c",&op); vai ver que dá certo (repare que usei fflush e %c ao invés de %s), pelo menos aqui no dev deu certo. Espero que tenha ajudado.
  10. Boa tarde, inventei de fazer um programa simples aqui, é digitada uma palavra qualquer de 3 letras (string a), depois a copio de trás para frente numa outra string (string b ) tentei fazer isso usando o comando for, mas não deu certo, então fui atribuindo os caracteres em b manualmente, item por item já que a palavra é curta, mas tem algo errado pois no último print não aparece caractere algum na string b, é como se ela estivesse vazia. O que pode estar errado? Agradeço desde já a quem puder ajudar. #include<stdio.h>#include<string.h>int main(){ char a[3], b[3]; int i, j, n; //n = numero total de caracteres da string a //limpar a string a e b for (i=0; i<3; i++) { b[i]=' '; a[i]=' '; } fflush(stdin); printf ("Digite uma palavra de 3 letras: "); scanf("%s", &a); b[0] == a[2]; b[1] == a[1]; b[2] == a[0]; printf ("\n\nPalavra digitada: %s \n", a); printf ("A palavra digitada anteriormente copiada de tras para frente em b: %s \n\n", ; system("pause"); return 0;}
  11. O exercício é: Crie uma função SOMA que recebe duas matrizes A e B e 2 inteiros n e m (0<n, m<= 100). As matrizes tem n linhas por m colunas. Devolve a matriz C que é a soma de A com B. #include <stdio.h> int soma(int a[n][m], int b[n][m], int c[n][m], int m, int n){ int i, j; for (i=0; i<m; i++) for (j=0; j<m; j++) c[i][j]=a[i][j]+b[i][j]; return c[i][j]; } void main(){ int a[100][100], b[100][100], c[100][100], m, n, i, j; printf ("Quantas linhas tem as matrizes? "); scanf("%d", &n); printf ("Quantas colunas tem as matrizes? "); scanf("%d", &m); for (i=0; i<n; i++) for (j=0; j<m; j++) printf ("a[%d][%d]= ", n, m); scanf ("%d", &a[n][m]); for (i=0; i<n; i++) for (j=0; j<m; j++) printf ("b[%d][%d]= ", n, m); scanf ("%d", &b[n][m]); int soma (a[][], b[][], c[][], m); printf ("A matriz de soma a+b: "); for (i=0; i<n; i++) for (j=0; j<m; j++) printf ("c[%d][%d]=%d", i, j, c[i][j]); getchar(); getchar(); getchar(); } No entanto, o programa não está compilando, no DEV C aparecem os seguintes erros: Que não estou conseguindo resolver, já fiz várias mudanças nos parâmetros enviados a função mas nada resolve. Se alguém puder ajudar, agradeço.

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...