
Josefran
Membros-
Total de itens
35 -
Registro em
-
Última visita
Sobre Josefran

Josefran's Achievements
0
Reputação
-
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; }
-
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
-
Vlw era isso mesmo
-
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
-
rsrsrs.... já fiz... já alterei retirei vetorez, fiz monte de coisa mas sempre da akela sequencia de erros
-
já... mas da essa mesma sequencia de erro que aparece na imagem
-
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
-
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 é?
-
alguém??? Ajudem-me... ...Ritual de Invocação... xingalabatumba xingalabatumba xingalabatumba KUROI da uma ajuda ai....
-
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(); }
-
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
-
ok deu certo muito grato abração kuroi
-
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?
-
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
-
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?