Ir para conteúdo
Fórum Script Brasil

CyberGate

Membros
  • Total de itens

    15
  • Registro em

  • Última visita

Sobre CyberGate

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

CyberGate's Achievements

0

Reputação

  1. cadastraEquipe(&equipes); Aqui estás a passar "equipes" por ponteiro de ponteiro. Ou seja p -> p -> struct. Quando vais registar uma equipa, isso irá mudar o ponteiro que está a apontar para a struct e não a propria struct. Isso irá fazer com que não te apareça valores "estranhos", mas há mais um problema que tens de resolver. Tu só irás conseguir registar e analisar o primeiro elemento da lista das 10 equipas. Precisas de ter uma variavel a dizer quantas já foram criadas (Total_Equipas) que vai aumentando a cada registo, e depois acessas o teu ponteiro da struct (equipes) assim: int Total_equipas = 0; registo(struct lancamento *equipes) { equipes[Total_equipas]->... Total_equipas += 1; } //e para analizar usas um for loop for(int i = 0; i < MAX; i++) { equipes[i]->... }
  2. CyberGate

    Help Codigo

    Usa %lf Nos scanfs e nos printfs para as "doubles"
  3. CyberGate

    Ajuda com codigo c

    Até podia, mas não sei como te ajudar. Vi alguns erros: void lerConsumo(struct apto *apt1, int i) { } lerConsumo(&apt.apartamento, &apt.consumo); //Passas um ponteiro de variavel inteiro enquanto devias passar um ponteiro de estrutura //Passas um ponteiro de inteiro para um inteiro. //... if (struct apto ap < 10) //Aqui estás a criar uma strutura chamada ap dentro de um if e compara-la com um numero?
  4. Fazes um for loop a percorrer os valores de x e y (entre -1 e 1). Adicionas o x e o y á posição do teu "centro" que queres analisar á roda. Depois fazes "continue;" quando, ao "analisares" no loop, a posição for a do proprio centro ou se exceder os limites do array. ... #define ARRAY_X 3 #define ARRAY_Y 3 struct Vector { Vector(int _x, int _y) : x(_x), y(_y){} int x; int y; } //... int array[ARRAY_X][ARRAY_Y]; Vector numero(1, 1); for(int y = -1; y != 2; y++) { if(numero.y + y < 0 || numero.y + y >= ARRAY_Y) continue; for(int x = -1; x != 2; x++) { if(numero.x + x < 0 || numero.x + x >= ARRAY_X) continue; if(x == 0 && y == 0) continue; if(array[numero.x + x][numero.y + y] == 1)std::cout << "Encontrei um numero um na posição x:" << numero.x + x, " e y:" << numero.y + y << std::endl; } }
  5. Python é bastante simples de aprender. Basta fazeres download á framework do python aqui e a um editor de texto (como por exemplo o Atom). Depois tens de confirgurar... https://www.youtube.com/watch?v=uve1tjVIQ6c Se achas que tens tempo podes aprender alguma coisa como o c/c++ que é bastante divertido mas para criares algo complexo tens de ter paciencia e rigor. Se assim o fosse, podias utilizar o visual studio community edition e fazes download a "bibliotecas" como por exemplo o SDL. Eu não sei se o teu nivel de programção é assim tão elevado. Por isso se quisesses fazer o mais rápido possivel, tens a alternativa do https://scratch.mit.edu/. É uma ferramenta, como uma linguagem, mas não precisas de usar codigos, vai-te fazer usar a logica da mesma forma.
  6. fseek(arq, cont*sizeof(struct contato), SEEK_SET); Quando usas "a" ou "ab" para abrir um ficheiro, o ponteiro de escrita vai sempre para o final do arquivo. Funções para reposicionar o ponteiro (como o seek que utilizas-te) são ignoradas. Mas de qualquer dar formas essa parte está bem. while(fread(&aux, sizeof(struct contato),1,arq)==1 && !feof(arq)){ printf("\nNome: %s\n", aux.nome); printf("Telefone: %s\n", aux.fone); printf("Aniversaio: %d/%d/%d\n",aux.niver.dia,aux.niver.mes,aux.niver.ano); fread(&aux, sizeof(struct contato), 1, arq); Mas aqui, quando extrais os dados, utilizas duas vezes o "fread", uma enquanto estás a verificar, e outra no final (não sei porque). Tira essa do final e vais ver que vai funcionar. if(cont<=TAM){ Outro erro que eu vi, que te poderá dar problemas no futuro é essa expressão. cont não pode ser igual a TAM, pois o ultimo elemento do array é TAM - 1
  7. Melhor_Aluno[N_Melhores] Não podes criar um array com "variavel" elemenos. Mas mesmo que o teu compilador te esteja a deixar, isso seria incorreto por varias razões. Uma delas é porque estás a criar isto: Melhor_Aluno[0], ou seja um array com 0 elementos? Isso vai-te crashar-te o programa quando tentares acessar... Acho que nessa situação tu queres criar uma lista. Para isso há várias formas: Vetores (só c++), alocação e realocação de memoria: int *data = (int*)malloc(numero de elementos * sizeof(int)); Depois mais tarde se quiseres mudar o numero de elementos da lista fazes isto: data = (int*)realloc(data, numero de elementos * sizeof(int)); O ponteiro "data" aponta-te para o primeiro elemento do array, por isso se quiseres obter o primeiro elemento, por exemplo, fazes isto: data[0], o segundo, data[1] e por ai fora (é semelhante a usares arrays no stack aumentar o numero da lista não é por, mas para. Por exemplo: malloc(5) -> 0 0 0 0 0 realloc(data, 10) -> 0 0 0 0 0 0 0 0 0 0 Repara que malloc e realloc retornam-te um ponteiro com memoria livre para usares em bytes, por isso no caso de quereres um arraz de inteiros, tens de multiplicar por sizeof(int) que te retorna, normalmente, 4 (bytes). Não sei se estás dentro do que um pointer é, por isso sugiro-te que aprendas primeiro.
  8. for(i=1;i<=n;n++) Isto não faz sentido. Mas digamos que te enganas-te, e no sitio do "n++" tinhas "i++" for(i=1;i<=n;i++) Continua a não fazer sentido. Estas a relacionar o numero que vais verificar como multiplicador com a quantidade de numeros que vais ter entre "a" e "b". Se mudares "a" de 1 para 100, a quantidade de numeros que tens de verificar vai ficar a mesma! if ((a,b)%n==0) //(a,b)?? E... Isto é inválido em c/c++ #include<stdio.h> int main() { int n, a, b; bool Pelo_Menos_Um = false; scanf("%d", &n); scanf("%d", &a); scanf("%d", &b); if(a < 0 || b < 0 || n <= 0) return 1; if(a > b) return 1; for(int i = a; i <= b; i++){ if (i % n == 0) { printf("%d\n",i); Pelo_Menos_Um = true; } if(Pelo_Menos_Um == false) printf("Inexistente\n"); return 0; } O maximo que te posso ajudar, é dar-te as coisas resolvidas, e tu tentares perceber o que fizeste mal...
  9. struct lista { int info; //char struct lista* prox; }; Primeiro, info tem de ser um char void lst_imprime (Lista* l) { do { printf("%d\t",l->info); //%c l = l->prox; } while (l != NULL); } no printf, não pode estar %d, se não vai-te dizer o valor em forma de numero inteiro char R; int i; //char Lista* l; l = lst_cria(); Na função main, i também têm de ser tipo char scanf("%d",&i); //%c Aqui também têm de estar dentro da função scanf %c Lista* lst_insere (Lista* l, int i) //char i { Lista* novo = (Lista*) malloc(sizeof(Lista)); novo -> info = i; novo -> prox = l; return novo; } E... nesta função passas o argumento 'i' como char Continua a não dar?
  10. Onde queres especificamente ajuda? Eu não te posso ajudar sem saber no quê! Sabes ao menos o que é um vetor? Onde é que tens dificuldade?
  11. scanf("\n%d", &Capital); Tens '\n' em todos os scanfs, para nada. scanf("\n%w",&w); Isto está-te a crashar o programa. %w? if (w != 2); { Juros = Juros; } Aqui também não sei o que pretendes fazer...
  12. Se te responder á pergunta não estou a seguir os propositos de haver um forum ("ajudar"). Mas já que você até meteu uma linha a dizer "OBS:", eu vou fazer o trabalho que o teu professor te deu. Não, para te ajudar, mas pelo simples caso de você não conseguir chegar lá por si mesmo... por alguma razão. algoritmo "soma e mostra o maior valor digitado"var contador, valor, soma, maior, menor, primeiro: inteiro inicio contador <- 1 soma <- 0 primeiro <- 0 enquanto (contador <= 5 ) faca escreva ("digite o valor: ") leia (valor) se (primeiro == 0) menor <- valor primeiro = 1 se (valor > maior) então maior <- valor fimse se (valor < menor) então menor <- valor fimse soma <- soma + valor contador <- contador + 1 fimenquanto escreval ("a soma total foi: ",soma) escreval ("maior número digitado: ",maior) escreval ("menor número digitado: ",menor)fimalgoritmo
  13. for (i=0; i<dias; i++) { if (vetor[i].chuva==TRUE || vetor[i].neblina == TRUE) { dias_ruins = &vetor[i]; //??? } else{ dias_bons = &vetor[i]; //??? } } /* ---- ????????? ----- free(vetor); free(dias_bons); free(dias_ruins); */ O primeiro erro que tens aí, é estáres a gravar (dentro do segundo for loop) cada endereço de cada dado do vetor principal, dentro do ponteiro e não cada dado do vetor principal dentro do bloco de dados do vetor "dias_ruins" e "dias_bons". Devia ser assim: if...... dias_ruins[contador_de_dias_Ruins] = vetor[i]; contador_de_dias_Ruins++; else..... dias_bons[contador_de_dias_Bons] = vetor[i]; contador_de_dias_Bons++; Segundo... Porque é que limpas os dados todos?
×
×
  • Criar Novo...