Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Amanda Kellen

Membros Plenos
  • Total de itens

    40
  • Registro em

  • Última visita

  • Qualificações

    N/D

Reputação

40

Sobre Amanda Kellen

  • Data de Nascimento 26-08-1997 (20 anos)

Informações gerais

  • Cidade e Estado
    belo horizonte/MG
  • Sexo
    Feminino

Outros

  • Ocupação
    engenharia de sistemas
  1. Fiz esse código com alocação dinâmica e ele compila,porém o primeiro elemento do vetor imprime de maneira errada pois imprime o endereço de memória,o que tenho q mudar? Segue abaixo a foto do erro e o código #include<stdio.h> #include<stdlib.h> int main() { int *vetor,i; *vetor=(int*)malloc(5); if(vetor == NULL) { printf("Alocacao fracassada!"); return vetor; } else{ for(i=0;i<5;i++) { printf("\nDigite o %d valor: ",i+1); scanf("%d",&vetor[i]); system("clear||cls"); } printf(" %d",vetor[0]); printf("\nO vetor digitado foi:\n["); for(i=0;i<5;i++) { printf(" %d,",vetor[i]); } printf(" ]\n"); } free(vetor); system("pause"); return 0; }
  2. Criei esse programa que realiza cadastro de alunos.Porém a função remove,que assim como o nome já diz remove alunos,não está funcionando adequadamente pois não está removendo os alunos na impressão.Além disse a insere ordenado que deveria colocar em ordem alfabetica não está fazendo isso.O que há de errado com as funções? #include <stdio.h> #include <stdlib.h> #include <string.h> #define Tamanho 70 #define NProvas 3 typedef struct sTipoAluno TipoAluno; struct sTipoAluno { char Nome[Tamanho]; float Nota[NProvas]; TipoAluno *PtrProximo; }; TipoAluno * IniciaLista();//Cria uma lista vazia int listavazia(TipoAluno *);//Verifica se a lista está vazia TipoAluno * insere (TipoAluno *);//Insere elemento na lista TipoAluno * InsereOrdenado (TipoAluno *);//Insere elemento de forma ordenada na lista TipoAluno * busca (TipoAluno *);// Busca um elemento da lista TipoAluno * removeAluno (TipoAluno *);// Remove um elemento da lista void imprime (TipoAluno *);// Imprime todos os elementos da lista int main () { TipoAluno *alunos = IniciaLista(); alunos = InsereOrdenado(alunos); alunos = InsereOrdenado(alunos); alunos = InsereOrdenado(alunos); alunos = insere(alunos); imprime(alunos); alunos = removeAluno(alunos); imprime(alunos); getchar(); return 0; } TipoAluno * IniciaLista() { printf("<<<<<LISTA INICIALIZADA>>>>\n"); return NULL;//CRIACAO DO HEAD //O } int listavazia(TipoAluno *alunos) { if(alunos == NULL) return 0; else return 1; } TipoAluno * insere (TipoAluno *alunos). { TipoAluno *novo = (TipoAluno *)malloc(sizeof(TipoAluno)); int i; printf("\nDigite o nome do Aluno: "); setbuf(stdin, NULL); gets(novo->Nome); for(i=0 ; i<NProvas; i++) { printf("\nDigite a nota da Prova %d: ", i+1); setbuf(stdin, NULL); scanf("%f", &novo->Nota[i]); } novo->PtrProximo = alunos; alunos = novo; return alunos; } TipoAluno * InsereOrdenado (TipoAluno *alunos) { TipoAluno *percorre = alunos;. TipoAluno *novo = (TipoAluno *)malloc(sizeof(TipoAluno)); int i; printf("\nDigite o nome do Aluno: "); setbuf(stdin, NULL); gets(novo->Nome); for(i=0 ; i<NProvas; i++) { printf("\nDigite a nota da Prova %d: ", i+1); setbuf(stdin, NULL); scanf("%f", &novo->Nota[i]); } if (listavazia(alunos) == 0) { novo->PtrProximo = alunos; alunos = novo; return alunos; }else { if (strcmp(alunos->Nome, novo->Nome) > 0 ) { novo->PtrProximo = alunos; alunos = novo; return alunos; } while (percorre->PtrProximo != NULL) { if (strcmp((percorre->PtrProximo)->Nome, novo->Nome) > 0 ) { novo->PtrProximo = percorre->PtrProximo; percorre->PtrProximo = novo; return alunos; } percorre = percorre->PtrProximo; } if (percorre->PtrProximo == NULL) { novo->PtrProximo = NULL; percorre->PtrProximo = novo; } } return alunos; } TipoAluno * busca (TipoAluno *alunos) { char nomebusca[Tamanho]; TipoAluno *aux = alunos; printf("\nDigite o nome para Busca: "); setbuf(stdin, NULL); gets(nomebusca); while (aux != NULL) { if ((strcmp(nomebusca, aux->Nome) == 0)) { printf("\nNOME ENCONTRADO!!!!"); return aux; } aux = aux->PtrProximo; } printf("\nNOME NÃO ENCONTRADO."); return aux; } TipoAluno * removeAluno (TipoAluno *alunos) { TipoAluno *aux, *auxAnterior = alunos; aux = busca(alunos); if(alunos==NULL) if (aux == alunos) { alunos = alunos->PtrProximo; free(aux); }else if (aux != NULL) { while (auxAnterior->PtrProximo != aux) { auxAnterior = auxAnterior->PtrProximo;. } auxAnterior->PtrProximo = aux->PtrProximo; free(aux); } return alunos; } void imprime (TipoAluno *alunos) { TipoAluno *percorre = alunos; int i; while (percorre != NULL) { printf("\n========================================================"); printf("\nNome: %s", percorre->Nome); for(i=0 ; i<NProvas ; i++) { printf("\nNota(%d): %.2f", i+1, percorre->Nota[i]); } printf("\n========================================================"); percorre = percorre->PtrProximo; } }
  3. @Simon Viegas a questão do void int eu até entendo,só mudei pra ficar parecido ao exercicio anterior que é assim: mas tinha me esquecido dessa questão do ponteiro. em relação a isso eu não estava levando tanto em consideração isso porque esse exercicio estou refazendo partes q fiquei com duvidas,mais como um treino mesmo,logo nem levei isso em consideração. realmente no exercicio não tem essa limitação mas o exercicio após esse pede somente expoentes negativos então preferi fazer esse apenas para expoentes positivos. muito obrigado!
  4. segue abaixo o enunciado: adicionado 10 minutos depois referente a essa parte eu cometi um erro me desculpe,eu também tenho um programa q calcula apenas com expoentes negativos e ele estava aberto no momento e por falta de atenção calculei 2^-3 nele e acabei me equivocando.esse programa em questão calcula apenas com expoentes positivos. segue o código abaixo,adicionei um while para q não aceite expoentes negativos: #include <stdio.h> #include <stdlib.h> int leitura(char); int xelevadoy(int,int,int*); void imprime(int,int,int); int main() { int x,y,potencia=1; x=leitura('x'); y=leitura('y'); while(y<0) { printf("\nERRO!!ESTE PROGRAMA CALCULA SOMENTE POTENCIAS DE EXPOENTE POSITIVOS!!\n"); y=leitura('y'); } xelevadoy(x,y,&potencia); imprime(x,y,potencia); system("pause"); return 0; } int leitura(char x) { int y; printf("\n Digite o valor de %c:",x); scanf("%d",&y); system("clear||cls"); return y; } int xelevadoy(int x,int y,int *potencia) { int i; for(i=1;i<=y;i++) { *potencia=*potencia*x; } return *potencia; } void imprime(int x,int y,int potencia) { printf("\n %d^%d=%d \n",x,y,potencia); }
  5. @Simon Viegas estava errado porque no enunciado tinha o prototipo da função e pedia q fosse int e não tinha notado isso depois eu troquei.Eu coloquei return potencia depois q tinha postado e me esqueci de editar,e no meu eu testei 2^-3 e foi corretamente olha só:
  6. Muito obrigado a todos,o void antes do imprime foi porque eu copiei o nome e colei na main e esqueci de tirar o void,agora está funcionando corretamente,troquei também na função xelevadoy o void por int,que eu tinha colocado errado mesmo por descuido e também mudei o valor recebido por i,antes estava 0,troquei por 1 e ficou assim: #include <stdio.h> #include <stdlib.h> int leitura(char); int xelevadoy(int,int,int*); void imprime(int,int,int); int main() { int x,y,potencia=1; x=leitura('x'); y=leitura('y'); xelevadoy(x,y,&potencia); imprime(x,y,potencia); system("pause"); return 0; } int leitura(char x) { int y; printf("\n Digite o valor de %c:",x); scanf("%d",&y); system("clear||cls"); return y; } int xelevadoy(int x,int y,int *potencia) { int i; for(i=1;i<=y;i++) { *potencia=*potencia*x; } } void imprime(int x,int y,int potencia) { printf("\n %d^%d=%d \n",x,y,potencia); }
  7. Tenho que fazer um programa dessa maneira usando ponteiro e um sem ponteiro,o sem ponteiro eu consegui fazer mas com ponteiro não está dando certo porque ainda tenho certa difiuldade com ponteiros.O q tenho q fazer para q o programa funcione? #include <stdio.h> #include <stdlib.h> int leitura(char); void xelevadoy(int,int,int*); void imprime(int,int,int); int main() { int x,y,potencia=1; x=leitura('x'); y=leitura('y'); xelevadoy(x,y,&potencia); void imprime(x,y,potencia); system("pause"); return 0; } int leitura(char x) { int y; printf("\n Digite o valor de %c:",x); scanf("%d",&y); system("clear||cls"); return y; } void xelevadoy(int x,int y,int *potencia) { int i; potencia=1; for(i=0;i<=y;i++) { potencia=potencia*x; } } void imprime(int x,int y,int potencia) { printf("\n %d^%d=%d \n",x,y,potencia); }
  8. Tenho que fazer uma função que duplica cada caractere de uma string recebida.Consegui fazer a função e vi que ela está duplicdando,porém ao imprimir mostra a string antes de ser duplicada o que faço? #include <stdio.h> #include <stdlib.h> #include <string.h> #define TAMANHO 100 int main() { char texto[TAMANHO]; printf("\n Digite o texto: "); fgets(texto,(TAMANHO-1),stdin); system("cls||clear"); int cont=(((strlen(texto))*2)+1); char duplo[cont]; duplo[cont]='\0'; printf("\n Texto antes da mudança:\n%s",texto); duplica(texto,duplo); getchar(); return 0; } void duplica(char texto[],char duplo[]) { int i,j; for(i=0;texto[i]!=NULL;i++) { j=i+1; duplo[i]=texto[i]; duplo[j]=texto[i]; printf("\ni: %d %c\n j:%d %c\n",i,duplo[i],j,duplo[j]);//Adicionei isso aqui pra verificar se estava duplicando e vi q está mas a impressao que esta errada } printf("\n Texto apos ser duplicado:\n"); for(i=0;duplo[i]!=NULL;i++) { printf("%c",duplo[i]); } printf("\n"); }
  9. @cyer muito obrigada pela dica,irei usar adicionado 1 minuto depois @devair1010 Muito obrigado pela ajuda,só não entedi muito bem essa parte do código: troca[strlen(nome)]='\0'; sei que o strlen retorna o comprimento da string,no caso nome,mas não entendi o porque do uso nesse código,poderia me explicar por favor?
  10. Fiz um programa que transforma letras minusculas em maiusculas,apesar de estar funcionando a impressao da string não está correta,imprimi como a foto em anexo,não imprimindo o espaço,o que faço para corrigir esse erro? #include <stdio.h> #include <stdlib.h> #include <string.h> #define TAMANHO 20 int main() { char nome[TAMANHO],troca[TAMANHO]; leitura(nome); maiuscula(nome,troca); getchar(); return 0; } void leitura(char nome[]) { int i; printf("\nDigite um nome(ate 19 caracteres)"); gets(nome); } void maiuscula(char nome[],char troca[]) { int i; for(i=0;i<TAMANHO;i++) { if ( (nome[i] >= 'a') && (nome[i] <= 'z') ) { troca[i]= nome[i]- 32; //nome[i] = nome[i]- 32;//quando eu fiz assim verifiquei que imprimia corretamente a string nome mas a troca sempre fica estranha,mesmo dessa forma dando certo queria //verificar como seria o jeito correto ultilizando a string troca,já que essa foi a minha priomeira ideia e não achei o erro } } printf("\n A string:%s em maiusculo fica:%s \n",nome,troca); }
  11. obrigado,voce poderia me explicar essa parte por favor? getch()-48 como funciona getch() e o porque do -48
  12. Criei um programa que verifica se um numero é palindromo(Número palíndromo é aquele que, se lido de trás para frente e de frete para trás, é o mesmo).O programa funciona corretamente.Mas para conseguir salvar os numeros em um vetor tenho q digitar um digito dar enter e assim se repetindo.Queria saber como faço pra escrever todos os digitos,salva-los em um vetor sem q tenha q dar enter toda vez q escrevo um novo digito. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int p[4],i,aux1=0,aux2=0,aux3=0,aux4=0,aux=0; printf("<<<<Numeros palindromos>>>>>"); printf("\nDigite um numero de 4 digitos: "); scanf("%d%d%d%d",&p[0],&p[1],&p[2],&p[3]); if((p[0]==p[1])&&(p[0]==p[2])&&(p[0]==p[3])) { printf("\n O numero %d%d%d%d e palindromo!!!\n",p[0],p[1],p[2],p[3]); } else { if((p[0]==p[3])) { aux=1; if((p[1]==p[2])) { aux2=1; } } if((aux==1)&&(aux2==1)) { printf("\n O numero %d%d%d%d e palindromo!!!\n",p[0],p[1],p[2],p[3]); } else { if((aux!=1)&&(aux2!=1)) { printf("\n O numero %d%d%d%d nao e palindromo!!!\n",p[0],p[1],p[2],p[3]); } } } system("pause"); return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×