Ir ao conteúdo
  • Cadastre-se

yDuba

Membro Pleno
  • Posts

    33
  • Cadastrado em

  • Última visita

posts postados por yDuba

  1. Olá, gostaria de verificasse onde esta o erro na logica cujo o objetivo é, ler um vetor e os valores que forem maiores que 0(positivo) receber o valor 0. Exemplo {-5,-4,6,7}, usando recursividade deve retornar {-5,-4,0,0}.Lembrando, deve-se utilizar recursividade.

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    recur(int vet[] ,int tamvet);
    int main()
    {
        int vet[100],tamvet,i,tamanho;
        
        printf("=======Tamanho do vetor========\n");
        scanf("%d",&tamvet);
        
        printf("==================================\n");
        printf("Entre com os dados do vetor \n");
        for(i=0;i<tamvet;i++){
        	scanf("%d",&vet[i]);
        }
        printf("=================VETO LIDO======================\n\n");
        for(i=0;i<tamvet;i++){
        	printf(" %d",vet[i]);
        }
        tamanho=tamvet-1;
        recur(vet,tamanho);
        printf("\n\n\n VETOR RECEBENDO 0 EM ENTRADA MAIOR QUE 0:\n");
        	for(i=0;i<tamvet;i++){
        	printf(" %d",vet[i]);
        	}
        
    }
    recur(int vet[] ,int tamanho){
    	int i;
    	if(vet[tamanho]>0){
    		return vet[tamanho]=0;
    	}
    	else{
    		return recur(vet,tamanho-1);
    	}
    	if(tamanho>0){
    		return recur(vet,tamanho);
    	}
    
    	
    }

     

     

  2. @devair1010 mas em que isto implica? pois tipo, o tamanho da minha placa serve apenas para dizer a quantidade de numeros que quero guardar nela, logo se estou fazendo placa de 'carros', devo usar um tamanho menor. Ou não?

    adicionado 2 minutos depois

    @devair1010 deixarei o enunciado aqui :listar todas as placas e os proprietários dos veículos que comecem com a letra 'A' e terminem com '0', '2' ou '7'. DICA: faça com que a placa seja um vetor de caracteres!

    • Obrigado 1
  3. 10 minutos atrás, devair1010 disse:

    @yDuba    no struct precisa colocar o tamanho da variável placa ,  e na hora de comparar verificar se for A maiúsculo ou minúsculo ,  assim :

    
    struct carro{
        char placa[30];
        char nome[ 30];
    ];
    struct carro reg[10];
      
    if(toupper(reg[j].placa[0]=='A'){

     

    Mas nao é para verificar se é maiusculo, e sim se a letra A inicia na primeira posição da placa, e 2 ou 0 ou7 fincaliza o final de uma placa, se sim imprimir o propietario desta placa.

    • Obrigado 1
  4. Olá, estou tentando realizar a seguinte tarefa: Listar propietarios das placas dos carros que iniciam em A e finalizam em 0,2,7. Entretanto não esta funcionando, a variavel responsavel pela impressao apenas o ultimo valor lido.

    //leitura da vairavel que eu queria colocar em fgets mas a mesma não funcioana
    scanf("%s",&reg[i].placa);
    .
    .
    .
    .
    
    CAD listaB(CAD reg[], int nreg){
            int j;
    		for(j=0;j<nreg; j++){
                    if(reg[j].placa[0]== 'a'){
                           		if(reg[j].placa[5]==0 || reg[j].placa[5]=='2' || reg[j].placa[5]=='7'){
                                printf(">>%s PLACA %s\n",reg[j].nome,reg[j].placa);
                            }
                    }
            }
    }

     

    • Amei 1
  5. Olá, boa tarde.Gostaria de ajuda para excluir um registro. Já encontrei em outros tópicos algumas soluções, porém não consigo aplica-las pois não tenho o conhecimento de funções tipo, realloc , fread, fclose,free, entre outros. Então gostaria também da explicação de como se usa cada função que utilizarem para solucionar o problema.  O codigo da parte onde tenho duvida:

    typedef struct {
            int nconta;
            char nome[200];
            float saldo;
    }CONTA;
    //Definição da variavel global
    CONTA cad[15];
    int n,op;
    //Declaração da subrotina
    CONTA cadastro();
    CONTA exclui();
    CONTA visu();
    .
    .
    .
    //Subrotina para excluir a conta com o menor saldo
    CONTA exclui(){
            //Declracao de variaveis
            int i,menor,num,ex;
            menor=0;
            for(i=0;i<n; i++){
                    if(menor<cad[i].saldo){
                            menor=cad[i].saldo;
                            num=i;
                    }
            }
    //parte que exclui o registro com o menor saldo ??
        }

     

  6. Olá, tenho uma questão que se pede para descobrir os valores do coeficiente A e B, entretanto, na formula os valores de A e B não resultam corretamente. Ajuda?

    Enunciado da questão: Faça um programa que use uma subrotina para receber como parâmetro dois vetores, contendo valores da coordenada x e valores da coordenada y de pontos no plano cartesiano. A subrotina deve calcular os coeficientes a e b (conforme equações abaixo) de uma reta y=ax+b que é a regressão linear dos pontos.

    a=(nΣxy-Σx*Σy)/(nΣx2-(Σx)2      b=(Σy*Σx2-Σx*Σxy)/(nΣx2-(Σx)2)

    #include <stdio.h>
    #include <math.h>
    #define tam 2
    
    void funcaoaeb( int va[], int vb[], int  i);
    int main(){
    	//declaração de variaveis 
    	
    	int va[tam],vb[tam], xa,ya,xb,yb,i;	
    	
    	//Leitura de x e y para vetor a e b
    	printf("Digite valores das cordenadas x e y do vetor A: \n");
    		for(i=0; i<tam; i++){
    			scanf("%d",&va[i]);
    		}
    	printf("\n Digite valores das coordenadas x e y do vetor B: \n");
    		for(i=0; i<tam; i++){
    			scanf("%d",&vb[i]);
    		}
    	
    	funcaoaeb( va, vb, i );
    	
    }
    	void funcaoaeb( int va[], int vb[], int i){
    	float n,a,b,somax,somay;
    		// Solicita um valor n, pois o mesmo se encontra na formula de regressão linear, entretanto no algoritmo não especifica sua função.
    		printf("Digite um valor N \n");
    		scanf("%d",&n);
    		
    		somax=(va[0]+vb[0]);
    		somay=(va[1]+vb[1]);
    		//descobrir valor de A e B 
    	a=((((n*(somax*somay)))-((somax)*(somay))) - ((somax*somay)) )/((n*(somax*somax))-((somax*somax)*(somax*somax)));
    	b=(((somay)*(somax*somax))-((somax)*(somax*somay))) /((n*(somax*somax))-((somax*somax)*(somax*somax)));
    	
    		printf("valor de A: %.2f \n", a);
    		printf("Valord de B: %.2f",b);
    }


     

  7. 4 horas atrás, Flávio Pedroza disse:

    Se "provMnot=j;" então ele vai de 0 a 2, e não de 1 a 3, não é mesmo?

    
    for(j=0;j<col;j++){
     if(provNot[i][j]<menor[i]){
     menor[i]=provNot[i][j];
     provMnot=j;                  // j vai de 0 a no máixmo 2
     }
    }
    if(provMnot==0){ 			
      p1=p1+1;
    }		
    if(provMnot==1){	
        p2=p2+1;
    } 		
    if (provMnot==2){
     p3=p3+1;
    }

    Veja se assim funciona

    Sim, descobri apos criar o post, ai n tinha como excluir rs. Mas muito obrigado.

  8. Olá, neste codigo tenho que demostrar qual é a quantidade de vezes em que a prova 1 obteve a menor nota, além das menores nota de cada aluno. Entretanto a logica que imaginei para verificar a quantidade de menores notas em cada prova não funciona. Gostaria de ajuda. 

    #include <stdio.h>
    
    #define lin 4
    #define col 3
    
    void exibirresultado(int provNot[][col]);
    
    int main(){
    	 int provNot [lin][col];
    	 int i,j;
    	
    	 printf("\n #########################################\n");
    		
    			for(i=0; i<lin; i++){
    			printf("Digite a nota do  %d aluno:\n",i+1);
    				for(j=0; j<col; j++){
    					printf("Prova %d :\n",j+1);
    					scanf("%d",&provNot[i][j]);	
    			}
    		}
    		exibirresultado(provNot);
    	}
    								//SUBPROGRAMA// 
    	void exibirresultado( int provNot[][col]){
    								//DECLARAÇÃP DE VARIAVEIS
    		int i,j,menor[lin*col],provMnot,p1,p2,p3 ;
    								//TESTE DE VERIFICAÇÃO DE QUAL É A MENOR NOTA DE CADA ALUNO
    		p1=p2=p3=0;
    			provMnot=0;
    		for(i=0; i<lin; i++){
    		
    			menor[i]=99999999;
    				for(j=0;j<col;j++){
    					if(provNot[i][j]<menor[i]){
    						menor[i]=provNot[i][j];
    						provMnot=j;                  // provMnot recebe a coluna do menor valor??
    					}
    				
    				}
    						if(provMnot==1){ 			/// se o valor de provNot =1 p1 recebe ele +1, assim contabilando quantidade de notas menores na p1.????
    							p1=p1+1;
    						}		if(provMnot==2){	
    									p2=p2+1;
    								} 		if (provMnot==3){
    											p3=p3+1;
    										}
    			provMnot=0;
    			}					// IMPRESSÃO DO RELATORIO COM A MENOR NOTA DA CADA ALUNO
    				printf(" \n*************** RELATORIO DE MENOR NOTA POR ALUNO *************** \n\n");		
    				for(i=0;i<lin;i++){
    					printf(" ALUNO %d , MENOR NOTA = *  %d  * \n\n",i+1,menor[i]);			
    				}	printf(" **************************************************************\n");
    								//IMPRESSÃO DO RESULTADO DE QUANTIDADE DE MENORES NOTA NAS P1 P2 E P3
    				
    				
    	
    				printf("Prova %d ,quantidade de  menor nota : %d \n", 1, p1);
    						printf("Prova %d ,quantidade de  menor nota : %d \n", 2, p2);
    							printf("Prova %d ,quantidade de  menor nota : %d \n", 3, p3);
    							
    				
     	}

     

  9. 1 minuto atrás, allanxd disse:

    É possível colocar o conteúdo de uma matriz em outra ou até mesmo em um vetor, até onde eu sei, desde que não ultrapasse os limites, senão pode dar erro em execução. Mas se esse código é de outra questão pode criar um novo tópico para vermos como está por completo.

    Obirgada, ja consegui :)

  10. 7 minutos atrás, allanxd disse:

    O define basicamente é uma constante. Nesse caso, toda vez que o compilador ver a palavra tam, ele vai substituir pelo valor 3. Então seria o mesmo que colocar o valor 3 em todas as ocorrências de tam. Se trocar o tam no código por 3 verá que o código compila também.

    Certo, tenho outra pergunta, é possivel um vetor de v[4] ou v[4][1] receber os dados de uma matriz [4][3]. Neste caso eu so quero receber os dados da primeira linha da matriz e exibi-los. Ex. 

    void exibirresultado( int provNot[][col]){
    		int i,j,menor[4][1],aux ;
    		
    		for(i=0; i<lin; i++){
    			menor[i][0]=99999999;
    				for(j=0;j<col;j++){
    					if(provNot[i][j]<menor[i][j]){
    						menor[i][j]=provNot[i][j];
    					}
    				}
    			}				
    				for(i=0;i<lin;i++){
    					printf("%d ",i+1);
    					for(j=0;j<1;j++){	
    						printf(" = %d \n",menor[i][j]);
    			}		
    		}
    	
     	}

     

  11. 17 minutos atrás, allanxd disse:
    
    #include <stdio.h>
    
    #define tam 3
    
    void exibirresultado(int provNot[][tam]);
    
    int main()
    {
        int provNot [tam][tam];
        int i,j;
    
        printf("\n #########################################\n");
    
        for(i=0; i<tam; i++)
        {
            printf("Digite a nota do  %d aluno:\n",i+1);
            for(j=0; j<tam; j++)
            {
                printf("Prova %d :\n",j+1);
                scanf("%d",&provNot[i][j]);
            }
        }
        exibirresultado(provNot);
        return 0;
    
    }
    void exibirresultado(int provNot[][tam])
    {
        int i,j,teste[tam][tam];
        for(i=0; i<tam; i++)
        {
            for(j=0; j<tam; j++)
            {
                teste[i][j]=provNot[i][j];
                printf("%d === %d\n",i, teste[i][j]);
            }
        }
    }

    Seria algo assim?

    Muito obrigado deu certo, queria entender que alem da mudança que você fez na parte do i e j iniciando com 0(algo que entendi),porque  teve de utilizar tam e vez de numeros para definindo o tamanho do vetor? poís percebi que  só funciona se utilizar TAM.;-;

  12. Olá, minha duvida é o seguinte, gostaria de saber como faço no código abaixo, para que minha matriz seja lida dentro do main, e após dentro do subprograma, um vetor receba os valores desta matriz e e exiba a matriz lida? 

    #include <stdio.h>
    
    #define tam 4
    
    
    void exibirresultado(int provNot[][3]);
    
    int main(){
         int provNot [tam][3];
         int i,j;
    
         printf("\n #########################################\n");
    
                for(i=1; i<=tam; i++){
                printf("Digite a nota do  %d aluno:\n",i);
                    for(j=0; j<3; j++){
                        printf("Prova %d :\n",j+1);
                        scanf("%d",&provNot[i][j]); 
                }
            }
                exibirresultado(provNot);
    
        }   
        void exibirresultado(int provNot[][3]){
            int i,j,teste[tam][3];
                    for(i=1; i<=tam; i++){
                        for(j=0;i<3;j++){
                            teste[i][j]=provNot[i][j];
                        }
                    }
                        for(i=1; i<=tam; i++){
                        for(j=0;i<3;j++){
                            printf("%d === %d",i, teste[i][j]);
                        }
                    }
        }

     

  13. @Pedrok97 Mesmo assim, tirando o '*'do i continua sem funcionar... Lendo alguns conteúdos,  tive a impressão que para a variavel verificar[j] receber a raiz de n tenho de "void imprimaraiz (float n[], float verifica[], int i)". Fazendo isto aparece apenas o seguinte erro. 27   [Error] invalid operands of types 'float' and 'int' to binary 'operator%'. Agora não sei o que fazer.

  14. Olá, tenho um código ao qual o objetivo é verificar se os numeros digitados pelo usuario existe raiz quadrada exata. Entretanto estou com confusão na parte da criação de subprogramas, mais especificamente o uso da passagem de parâmetro. O código

    
    
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    
    #define tam 5
    
    void imprimaraiz(float* n[], int* i);
    int main (){
    	
    	int i;
    	float n[tam];
    	
    	for (i=1; i<=tam; i++){
    		printf("Digite o % d valor: \n ",i);
    		scanf("%f",&n[i]);
    		
    	}
    		
    
    	return 0;
    }
    	void imprimaraiz(float* n[], int* i){
    			float j;
    			float verifica[tam];
    				for (j=1; j<=tam; j++){
    					verifica[tam]= sqrt(n[i]);
    						if(verifica[tam]%2==0){
    							printf("O numero %f é uma raiz quadrada exata! \n",verifica[tam]);
    						}
    				}
    		
    			
    			
    	}

     

  15. 5 minutos atrás, isrnick disse:

    Expliquei o que precisa corrigir nos comentários.

    (Código foi indentando usando https://www.tutorialspoint.com/online_c_formatter.htm )

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    
    int main()
    {
        int x[100],aux,i,j,qdeelementos;
        i=0;
        printf("Leitura da lista:\n");
        do {
            printf(" \n [%d] :",i);
            scanf("%d",&x[i]);
            i++;
        } while ((x[i-1]) !=-99 && i<=100); // deveria ser i<100 pois o vetor x não tem índice 100
    
        if (i>100) { // deveria ser i==100 ou i>=100 pela mesma razão
            qdeelementos=i;
        } else {
            qdeelementos= i-1;
        }
        printf("%d", qdeelementos);
        printf("\n============ lista inserida========= \n");
    
        for(i=0; i<qdeelementos;) {
            printf("-%d",x[i]);
            i++;
        }
    
        for(i=0; i<qdeelementos; i++) {
            for(j=0; j<qdeelementos-1; j++) {
                if( x[j] > x[j+1]) {
                    aux = x[j];
                    x[j] = x[j+1];
                    x[i+1] = aux; //O problema está aqui, deveria ser x[j+1] = aux;
                }
    
            }
        }
    
    
        for(i=0; i<=qdeelementos-1;) {
            printf("\n -%d",x[i]);
            i++;
        }
        getch();
        return 0;
    }

    obrigadaaa, estava duas horas e nao estava vendo o erro no "x[i+1]"... muito obrigada mesmo

    • Curtir 1
  16. Tenho um codigo para ser ordenado no modo bubbke sort, entretanto, acontece que a ordenação não esta funcionando, ajuda?

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    
    int main()
    {
        int x[100],aux,i,j,qdeelementos;
        i=0;
        printf("Leitura da lista:\n");
        do {
        			printf(" \n [%d] :",i);
                    scanf("%d",&x[i]);
                    i++;
        } while ((x[i-1]) !=-99 && i<=100);
    
      	if (i>100){ 
    		qdeelementos=i;
    	}else {		
    						qdeelementos= i-1;
    					
    	}	
    	printf("%d", qdeelementos);
    		printf("\n============ lista inserida========= \n");
    			
    			for(i=0; i<qdeelementos;){ 
    				printf("-%d",x[i]);
    				i++;
    			}	
    	
        for(i=0; i<qdeelementos; i++){
            for(j=0; j<qdeelementos-1; j++){
                if( x[j] > x[j+1]) {
                    aux = x[j];
                    x[j] = x[j+1];
                    x[i+1] = aux;
                }
                
            }
        }
      
    		
        		for(i=0; i<=qdeelementos-1;){ 
    				printf("\n -%d",x[i]);
    				i++;
    			}	
        getch(); 
        return 0;
    }

     

  17. 12 minutos atrás, isrnick disse:

    Falta inicializar k e pi, fazendo que comecem com valor 0, e a condição do do while também está errada, deve continuar enquanto k for menor que a quantidade de termos.

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
     main()
    {
        double k,pi,numtermos;
         printf("Digite a quantidade de termos: \n");
         scanf("%lf",&numtermos);
         pi=0;
         k=0;
         do {
                   pi = pi + 2 * powf(-1,k) * powf(3,0.5-k) / (2 * k + 1);
         		k=k+1;
         } while (k < numtermos);
    
         printf("Valor de pi:\n");
         printf("%lf",pi);
     getch();
        return 0;
    }

    continua com o mesmo erro tanto se eu colocar < ou <= , >=,> ...

  18. 5 minutos atrás, isrnick disse:

    A condição do while está errada, o ciclo do while deve continuar enquanto o erro for maior ou igual a precisão (não menor ou igual).

     

    E como postei na primeira resposta a função abs() é para o tipo int, para double a função para obter o valor absoluto é fabs(), e para float a função é fabsf().

     

    https://en.cppreference.com/w/c/numeric/math/fabs -> valor absoluto dos tipos de ponto flutuante

    https://en.cppreference.com/w/c/numeric/math/abs -> valor absoluto do tipos inteiros

     

    muitooo obrigada, estou com o algoritmo que o professor passou, algumas coisas erradas, valeu

    adicionado 5 minutos depois
    9 minutos atrás, isrnick disse:

    A condição do while está errada, o ciclo do while deve continuar enquanto o erro for maior ou igual a precisão (não menor ou igual).

     

    E como postei na primeira resposta a função abs() é para o tipo int, para double a função para obter o valor absoluto é fabs(), e para float a função é fabsf().

     

    https://en.cppreference.com/w/c/numeric/math/fabs -> valor absoluto dos tipos de ponto flutuante

    https://en.cppreference.com/w/c/numeric/math/abs -> valor absoluto do tipos inteiros

     

    Se não for pedir muito, poderia me ajudar nesta também ?  o erro é o seguinte 

    "

    Digite a quantidade de termos:
    5
    Valor de pi:
    -1.#IND00
    --------------------------------
    Process exited after 1.609 seconds with return value 0
    Pressione qualquer tecla para continuar. . ."

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
        double k,pi,numtermos;
         printf("Digite a quantidade de termos: \n");
         scanf("%lf",&numtermos);
         do {
                   pi = pi + 2 * pow(-1,k) * pow(3,0.5-k) / (2 * k + 1);
         		k=k+1;
         } while (k==numtermos);
    
         printf("Valor de pi:\n");
         printf("%lf",pi);
         getch();
        return 0;
    }

     

  19. #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main()
    { float k, pi, prec, pianterior;
    
        printf("Digite a precisao:\n");
        scanf("%f",&prec);
            pi=0;
            k=0;
                do{
                    pianterior = pi;
           pi = pi + 2 * pow(-1,k) * pow(3,0.5-k) / (2 * k + 1);
                    k = k +1;
                }while ( abs(pi-pianterior) <= prec);
    
                printf("Valor com sua precisao: \n");
                printf("%f",pi);
        return 0;
        getchar();
    }
    4 minutos atrás, isrnick disse:

    Você precisa postar o código como está atualmente pra vermos qual é o problema e podermos te ajudar.

    (Leia minha assinatura abaixo para ver como postar códigos no fórum.)

     

  20. 5 horas atrás, isrnick disse:

    Está tentando usar essa fórmula?

     

    NumberedEquation3.gif

    Fonte: http://mathworld.wolfram.com/PiFormulas.html

     

    Então tem algumas coisas erradas, deveria ser assim:

    
    pi = pi + 2 * pow(-1, k) * pow(3, 0.5-k) / (2 * k + 1);

     

    é esta mesmo, estava 'estão' estressada que errei alguns termos.. obrigada ..  fiz o teste na primeira vez rodou beleza, segunda vez n funciona apenas aparece para digitar a precisão e fica nisto;-; já abri ele no bloco de notas e executei e tal e nada... 

    to com um outro programa com a mesma questão entretanto apenas para saber o valor de pi, como resultado me da 

    "

    Digite a quantidade de termos que deseja:
    4
    Resultado de PI:
     -1.#IND00
    Process returned 0 (0x0)   execution time : 1.546 s
    Press any key to continue.


    "

  21. 25 minutos atrás, isrnick disse:

    ^ não é um operador de potência em C.

     

    Em C ^ é um operador binário OU EXCLUSIVO, e realmente não vai funcionar com float.

     

    Para calcular potência precisa usar a função pow() da biblioteca math.h (onde xn é calculado fazendo pow(x, n)).

    neste caso meu pi  para todos os numeros q coloco da 0,31... apenas o numero 1 q muda o valor...  a expressão esta corre  pi=pi+( 2*pow(1,k)*pow(3,0.5-k))/(2*5+1); ?

    • Curtir 1

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!