Ir para conteúdo
Fórum Script Brasil

Josefran

Membros
  • Total de itens

    35
  • Registro em

  • Última visita

Sobre Josefran

Josefran's Achievements

0

Reputação

  1. Galera o que tem errado no código abaixo... Quando compilo diz que 4 "new types may not be defined in a return type " and " return type specification for constructor invalid"... sou novo em c++ então para mim esta tudo correto mas não da certo.. Figuras.h #include <iostream> using std:: cout; using std:: endl; using std:: strcpy; class Figuras{ public: Figuras(); Figuras(char *, char *, double); virtual double calcArea(); protected: char nome[]; double area; char cor[]; } Figuras.cpp#include "Figuras.h" Figuras::Figuras(char nomeE[], char corE[], double areaE) { strcpy(nome, nomeE); strcpy(cor, corE); area = areaE; }
  2. Galera estou aqui com mais um problema, mas antes queria agradecer principalmente ao maligno por me ajjudar ate agora.... Bem... O problema dessa vez é o seguinte eu tenho uma lista encadeada simples e quero mudar dois elemnetos da lista de lugar... Eu fiz da seguinte maneira(Vale ressaltar que pos2 = pos1-1 não coloquei ai mas é bom citar Figura *troca(Figura *fig, int pos1, int pos2){ Figura *temp1; Figura *temp2; Figura *temp3; Figura *temp4; if(pos1<0 || pos2<0){ printf("Error\nO programa sera encerrado Cod 01\n"); system("pause"); exit(0); } temp1 = percorrer(fig, pos1-1); //devolve o elemento figura da posicao pos1-1 temp2 = percorrer(fig, pos1); temp3 = percorrer(fig, pos2); temp4 = percorrer(fig, pos2+1); temp1->next = temp3; temp3->next = temp2; temp2->next = temp4; return fig; } pois é.... estou tendo problemas ai... pois ele não troca e ainda por cima parece que cria um loop infinito... Se quizer ver eis o codigo fonte completo Estruturas.h typedef struct Circulos{ char nome[20]; char cor[10]; float area; float raio; } Circulo; typedef struct Triangulos{ char nome[20]; char cor[10]; float area; float base; float altura; } Triangulo; typedef struct Quadrados{ char nome[20]; char cor[10]; float area; float lado; } Quadrado; typedef struct Figuras{ Circulo *circulo; Quadrado *quadrado; Triangulo *triangulo; struct Figuras *next; } Figura;/*Estrutura usada para controle da figura*/ Funcoes.h int comprimento(Figura *fig); float retorneArea(Figura *fig); Figura *percorrer(Figura *fig, int i); Figura *troca(Figura *fig, int pos1, int pos2); Figura *BubbleSort(Figura *fig); Funcoes.c #include "Estruturas.h" #include "Funcoes.h" #include <windef.h> int comprimento(Figura *fig){ int tamanho; tamanho = 0; while(fig != NULL){ tamanho++; fig = fig->next; } return tamanho; } float retorneArea(Figura *fig){ if(fig->circulo != NULL){ return fig->circulo->area; } if(fig->quadrado != NULL){ return fig->quadrado->area; } if(fig->triangulo != NULL){ return fig->triangulo->area; } return 0.0; } Figura *percorrer(Figura *fig, int i){ int j; for(j = 0; j<i; j++){ if(fig != NULL){ fig = fig->next; } else{ printf("Error\nO programa sera encerrado Cod 02\n"); system("pause"); exit(0); } } return fig; } Figura *troca(Figura *fig, int pos1, int pos2){ Figura *temp1; Figura *temp2; Figura *temp3; Figura *temp4; if(pos1<0 || pos2<0){ printf("Error\nO programa sera encerrado Cod 01\n"); system("pause"); exit(0); } temp1 = percorrer(fig, pos1-1); temp2 = percorrer(fig, pos1); temp3 = percorrer(fig, pos2); temp4 = percorrer(fig, pos2+1); temp1->next = temp3; temp3->next = temp2; temp2->next = temp4; return fig; } Figura *BubbleSort(Figura *fig){ int lenght; int i; int j; float areaI; float areaJ; Figura *atual; lenght = comprimento(fig)-1; for(i = 0; i<lenght; i++){ for(j = lenght; j>=i+1; j--){ atual = percorrer(fig, j); areaJ = retorneArea(atual); atual = percorrer(fig, j-1); areaI = retorneArea(atual); if(areaJ<areaI){ fig = troca(fig, j-1, j); } }} return fig; } teste.c #include "Estruturas.h" #include <String.h> #include <stdio.h> #include "Funcoes.h" void static proximo(int i){ i = i+1; } main(void){ Circulo *c, *c1; int i; Quadrado *q; Triangulo *t; Figura *p, *r; c = malloc(sizeof(Circulo)); q = malloc(sizeof(Quadrado)); t = malloc(sizeof(Triangulo)); p = malloc(sizeof(Figura)); strcpy(c->cor,"Preto"); c->area = 12.0; strcpy(c->nome,"Circulo"); c->raio = 3.0; strcpy(q->cor,"Branco"); p->circulo = c; p->quadrado = NULL; p->triangulo = NULL; r= malloc(sizeof(Figura)); p->next = r; q->area = 15.0; strcpy(q->nome,"Quadrado"); q->lado = 3.0; r->circulo = NULL; r->quadrado = q; r->triangulo = NULL; r = r->next; r= malloc(sizeof(Figura)); t->altura = 3.0; t->base = 2.0; t->area = 3.0; strcpy(t->cor, "Rosa"); strcpy(t->nome, "Triangulo"); r->circulo = NULL; r->quadrado = NULL; r->triangulo = t; p->next->next = r; r->next = NULL; for(i = 0; i<10; i++){} printf("%d\n", i); system("pause"); proximo(i); r = p; printf("%d\n", i); while(r != NULL){ if(r->circulo!=NULL){ printf("%s %.2f \n", r->circulo->nome, r->circulo->area); } if(r->quadrado!=NULL){ printf("%s %.2f \n", r->quadrado->nome, r->quadrado->area); } if(r->triangulo!=NULL){ printf("%s %.2f \n", r->triangulo->nome, r->triangulo->area); } r = r->next; } system("pause"); p = BubbleSort(p); system("pause"); while(p != NULL){ if(p->circulo!=NULL){ printf("%s %.2f \n", p->circulo->nome, p->circulo->area); } if(p->quadrado!=NULL){ printf("%s %.2f \n", p->quadrado->nome, p->quadrado->area); } if(p->triangulo!=NULL){ printf("%s %.2f \n", p->triangulo->nome, p->triangulo->area); } p = p->next; } system("pause"); } P.S Sei que é uma boa prática de programação comentar, mas eu esqueci rs vou colocar ainda
  3. Galera estou implementando a seguinte função, comprimento que recebe um ponteiro do tipo Figura, percorre a lista e devolve o tamanho, problema é que o compilador diz que eu tenho que primeiro declara o NULL para depois usa-lo na função.... alguém me diz o que ta acontecendo CODIGOS Funcoes.h int comprimento(Figura *fig); float retorneArea(Figura *fig); Figura *troca(Figura *fig, int pos1, int pos2); Figura *BubbleSort(Figura *fig); Funcoes.c #include "Estruturas.h" int comprimento(Figura *fig){ int tamanho; tamanho = 0; while(fig != NULL){ tamanho++; fig = fig->next; } return tamanho; } Sei qu eainda tem outras funções a implementar mas o compílador não passa nem dessa
  4. Josefran

    Problema com struct

    rsrsrs.... já fiz... já alterei retirei vetorez, fiz monte de coisa mas sempre da akela sequencia de erros
  5. Josefran

    Problema com struct

    já... mas da essa mesma sequencia de erro que aparece na imagem
  6. Josefran

    Problema com struct

    Codigo Estruturas.h struct Circulos{ char cor[10]; char nome[10]; float raio; float area; struct Circulos *proximo; struct Circulos *anterior; }; struct Quadrados{ char cor[10]; char nome[10]; float lado; float area; struct Quadrados *proximo; struct Quadrados *anterior; }; struct Triangulos{ char cor[10]; char nome[10]; float base; float altura; float area; struct Triangulos *proximo; struct Triangulos *anterior; }; typedef struct Circulos Circulo;//Circulo typedef struct Quadrados Quadrado;//Quadrado typedef struct Triangulos Triangulo;//Triangulo main #include <stdio.h> #include <Estruturas.h> main(){ struct Circulos *p; struct Circulos c1; Quadrado q1; Triangulo t1; } foi mals
  7. Galera estou fazendo um trabalho da faculdade em que resolvi criar um .h só para as structs do programa, porem na hora de compilar o main ele diz que tem um erro no Estruturas.h(nome do .h que criei) e mandar eu redefinir as as structs, alguém pode me dizer o que é?
  8. alguém??? Ajudem-me... ...Ritual de Invocação... xingalabatumba xingalabatumba xingalabatumba KUROI da uma ajuda ai....
  9. Gente estou com um pequeno problema. estyou tentando construir um programa em que armazena os itens em uma árvore binaria ate agora fiz três funções mas estou com uns problemas. 1- A função strcmp sempre retornar 1; 2 - no modo debug, acompanhamos os valores das variaveis raiz->item e i e teremos algo do tipo raiz->item = "10º\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº\ráº" i = "10" dai sempre strcmp retorna 1. e ai o que tem de errado como faço? Código #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct tree arv; struct tree{ char item[80]; arv *dir; arv *esq; } *raiz=NULL; int busca(char i[80]); int adiciona(char i[80]); int remove(char i[80]); void imp(); void imppre(); void imppos(); void imps(); void *mallocX (unsigned int nbytes); void menu1(); void menu2(); void *mallocX (unsigned int nbytes) /* Função que aloca memoria, testa o retorno e retorna um ponteiro tipo void */ { void *ptr; ptr = malloc (nbytes); if (ptr == NULL) {/* Verifica valor retornado */ printf ("Socorro! malloc devolveu NULL!\n"); exit (EXIT_FAILURE); } return ptr; } int adiciona(char i[80]){//Função para adicionar os elementos na árvore arv *p; if(!raiz){//Verifica se a árvore esta vazia raiz = (arv *)mallocX(sizeof(arv)); strcpy(raiz->item, i); raiz->dir = NULL; raiz->esq = NULL; return 1; } p = raiz; while(p){//percorre a arvore em busca do seu local if(strcmp(p->item, i) > 0){ p = p->esq; } else{ p = p->dir; } } p = (arv *)mallocX(sizeof(arv));//adiciona o item na arvore strcpy(p->item, i); p->dir = NULL; p->esq = NULL; return 1; } int remove(char i[80]){//remove o item da arvore arv *p1=NULL, *p2=NULL, *p3=NULL, *p4=NULL, *p5=NULL; int j, k=0; p1 = raiz; p2 = raiz; p3 = p1->dir; p4 = p1->esq; printf("Atencao o procedimento de remover o no da arvore adotara por padra o anexamento da sub-arvore maior na menos\n"); if(!raiz){//Verifica se árvore esta vazia printf("A arvore esta vazia"); return 1; } else{ if(!strcmp(raiz->item, i)){//Verifica se o item esta na raiz da árvore p2 = p2->esq; raiz = p2; while(p2){ p2=p2->dir; } p2->dir = p3; free(p1); return 1; } while((j = strcmp(p2->item, i))&&(p2)){//Procura o item na arvore if(j<0){ p1 = p2; p2 = p2->dir; if(p2){ p3 = p2->dir; p4 = p2->esq; k = 0; } } else{ p1 = p2; p2 = p2->esq; if(p2){ p3 = p2->dir; p4 = p2->esq; k = 1; } } } if(!p2){ printf("O item não esta na arvore\n"); return 1; } if(k){ p1->dir = p4; p1 = p4; while(p1){ p1 = p1->dir; } p1 = p3; free(p2); return 1; } p1->esq = p4; p1 = p4; while(p1){ p1 = p1->dir; } p1 = p3; free(p2); return 1; } } int busca(char i[80]){ arv *p; int k; p = raiz; while((p)&&(k = strcmp(p->item, i))){ if(k<0){ p = p->dir; } else{ p = p->esq; } } if(!p) return 0; return 1; } void menu1(){ int k, j=0; char i[80], l[80]; do{ system("cls"); printf("\nDigite a opcao correspondente;\n\t1 - Inserir item na arvore;\n\t2 - Remover item da arvore;\n\t3 - Buscar item na árvore\n\t4 - Imprimir itens da árvore;\n\tSair\n"); scanf("%d", &k); switch(k){ case 1: system("cls"); printf("\nDigite o nome do item\n"); scanf("%s", &l); strcpy(i, l); j = adiciona(i); if(j){ printf("\n\nItem adicionado com sucesso!\n"); system("pause"); } break; case 2: system("cls"); printf("\nDigite o nome do item\n"); scanf("%s", &l); strcpy(i, l); j = remove(i); if(j){ printf("\n\nItem removido com sucesso!\n"); system("pause"); } break; case 3: system("cls"); printf("\nDigite o nome do item\n"); scanf("%s", &l); strcpy(i, l); j = busca(i); if(j){ printf("\n\nItem esta na arvore\n"); system("pause"); } else{ printf("\n\nO item não esta na arvore\n"); system("pause"); } break; }}while(k != 4); } int main(){ menu1(); }
  10. Josefran

    agenda telefonica em c

    Olha cara teu programa não tem apenas um erro tem varios mis vamos começar por cada função Inclusão você esta armazenando somente a primeira letra e numero de cada nome e telefone quando você cria typedef struct Agenda{ char nome[50]; char fone[17]; }T_agenda; e depois na hora de armazenar você armazena printf("Nome: "); scanf("%s",&Tab[total].nome[0]); ai você estara armazenando so a primeira letra de cada nome. caso você quera armazenar o nome todo você tem que mandar apenas o ponteiro da matriz de char, int e assim sucessivamente o certo seria printf("Nome: "); scanf("%s",&Tab[total].nome); Ordenar aqui o erro é similar pois você ta enviando para as funções strcmp, strcpy apenas char e elas recebem apenas cons char* ou seja ponteiros de string para corrigir basta fazer o mesmo do inclusão o resto eu não testei mas boa sorte qualquer coisa post ai
  11. ok deu certo muito grato abração kuroi
  12. O problema dele é bem simples. Ele esta armazenando todos os dados em matrizes. E esta inicializando elas errado. Olhem o trecho do codigo int num_cad=0, cod_aluno, q,i, j,auxiliar, x, c=0, y=50, codigo[num_cad],idade[num_cad],a; Ele inicializa o num_cad=0 e em seguida declara duas matrizes de tamanho 0, que são idade e codigo. Para que ele corrija o problema ele devera determinar um tamanho maximo de cadastros. Caso ele queria trabalhar com alocação dinamica tera que usar ponteiros. Estou certo Kuroi?
  13. Leia a tarefa e vai ver que será meio impossivel aos membros desse forum fazer seu devê, não porque seja dificil, pois teu professor já fez quase tudo e so implementar. É apenas saber quais tecnicas você aprendeu no primeiro ano. Abraços e boa sorte
  14. Pensei em fazer isso mas eu tive um problema... tipo tenho um arquivo chamado texto.txt e quero alterar uma determinada linha dele e salvar o arquivo com o mesmo nome se eu colocar um novo arquivo no buffer aberto como "w" não vai dar pane ou algo assim. porque quando abro o arquivo do tipo fopen("texto.txt", "w") ele deleta o arquivo caso já existia e ai? Melhorando a duvida Suponha que eu tenha um arquivo tex.txt salvo ai eu declaro dois ponteiros tipo FILE digamos p e fp. Dai fazemos p = fopen("tex.txt","r") e fp = fopen("tex.txt","w"). ok. não vai dar pane ai não? pois eu estou deletando um arquivo que esta no buffer e quando eu precisar fechar ele? porque quando abro fp ele deleta o arquivo tex.txt porque já existe. Deu para entender a duvida ou me embananei?
×
×
  • Criar Novo...