-
Posts
3.284 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Ansi C postou
-
@LuisGCarv suas suspeita estão aparentemente corretas. Eu não vi em que momento se alocou memória para o ponteiro CadastroImovel que até então não se sabe para onde está apontando. Os bytes lidos precisão de lugar reservado para serem gravados. Sem falar que no parâmetro temos o ponteiro-do-ponteiro em sua declaração &CadastroImovel isso para agravar ainda mais o que já estava perdido, aparentemente. while( !feof ( ponteiro )){ fread( &CadastroImovel, sizeof ( struct cadastro2 ), 1, ponteiro ); printf( "\nCódigo = %d\nProprietário = %s\n", CadastroImovel[j].codigo, CadastroImovel[j].proprietario ); j++; } Em que local atribuiu memória? struct movimentacao *OrcamentoObra; struct cadastro2 *CadastroImovel; // Atribuir memória a esse cara struct cadastro1 *CadastroColab;
-
É isso aí. A Chamada heurística faz o exame é dar o veredito, assim é mais seguro que #define no contexto mais global.
-
Foi um exercício fácil do qual já tenho lido bastante e faço sem esforço, existe muitos livros gratuitos de C onde qualquer pessoa com força de vontade pode ler antes de vir aqui. Sempre que tenho tempo os leio, então penso que todos podem fazer igual a mim, esse é meu hobby! Eu mal consigo acreditar que exista ainda pessoas com esse tipo de dúvida, só espero que ao ver os exemplos de hoje tome alguma atitude.
-
Olá.. ! Meu palpite é que esse objeto está incorretamente lendo à memória. O que me leva a pensar assim é isto; aloc++; OrcamentoObra = (movimentacao*) malloc(aloc * sizeof(movimentacao)); Pela intenção o Orçamento Obra é ponteiro que aponta para lugares cada vez diferentes e a cada interação. Cada vez que chamas malloc uma lista de locais novos lhe é atribuído, porém você pensa ainda ter o controle dos antigos dados, quando na verdade não tem. Dica: é use realloc pesquise mais como ela funciona. Credito que essa seja a função que você quer nesse caso. Com lista em c você melhora seu projeto, se resolver aprender a usar lista vai ter dado um salto em tanto em relação a usar realloc. ~~ / ~~
-
Ola...! Não é nada "difícil" #include<stdio.h>/*!< Incluir as rotinas que fazem Entra e Saída (E/S). */ #include<ctype.h>/*!< incluir as rotinas com tratamento de caracteres. */ /** * * * * * * * * * * * * * * * * * * * func principal - aqui você vai encontrar as seguintes palavras chaves: * isdigit, while, break, if, else, sprintf, getchar, char, int, * strings em C. <<! Estude cada uma delas !>> **/ int main( void ) { char digito; /*< para o dígito A */ int numero; /*< para o número B */ char numero_str[ 0xFF ];/*< para o numero B strings */ char aux; int qtd_digitos_iguais_digitos; /*< para o número de ocorrencias de A->B.*/ /*! pegar o digito A */ while( !isdigit( digito = getchar())); /*! força o numero B */ while ( 1 != scanf( " %d", &numero))(void)getchar(); sprintf( numero_str, "%d", numero );/*< imprimir número no strings. */ aux = 0; qtd_digitos_iguais_digitos = 0; while( numero_str[ aux ] != '\0' )/*< escaneando em busca do digito A. */ { if ( numero_str[ aux ] == digito ) qtd_digitos_iguais_digitos++; aux++; } printf( "%d\n", qtd_digitos_iguais_digitos );/*< resultado final */ /*! FIM */ return( 0x0 ); } ~~ / ~~
-
É uma interrogação. Você vai usar assim: int main() { int v1, v2, v3; printf("informe o valor das notas"); scanf("%d", &v1); scanf("%d", &v2); scanf("%d", &v3); printf("%d", ?aior (v1, v2, v3));
-
Não mudou nada, mesmo que inline seja feito pelo compilador , ou não ignorado pelo mesmo. A situação pede para tal otimização. Poderia ter feito como pensara desdo do começo: #define maior( x, y ) ((x) > (y)? (x):(y)) Resultado teria mesmo efeito de inline. Observe abaixo. Compare os arquivos de ambos Os projetos, inclusive diga qual apresenta maior performance ou se são iguaizinhos. inline. .file "forum.c" .def ___main; .scl 2; .type 32; .endef .section .rdata,"dr" LC0: .ascii "informe o valor das notas: \0" LC1: .ascii "%d\0" LC2: .ascii "%d\12\0" .section .text.unlikely,"x" LCOLDB3: .section .text.startup,"x" LHOTB3: .p2align 4,,15 .globl _main .def _main; .scl 2; .type 32; .endef _main: pushl %ebp movl %esp, %ebp andl $-16, %esp subl $32, %esp call ___main movl $LC0, (%esp) call _puts leal 20(%esp), %eax movl $LC1, (%esp) movl %eax, 4(%esp) call _scanf leal 24(%esp), %eax movl $LC1, (%esp) movl %eax, 4(%esp) call _scanf leal 28(%esp), %eax movl $LC1, (%esp) movl %eax, 4(%esp) call _scanf movl 28(%esp), %eax cmpl %eax, 24(%esp) cmovge 24(%esp), %eax movl 20(%esp), %edx movl $LC2, (%esp) cmpl %edx, %eax cmovl %edx, %eax movl %eax, 4(%esp) call _printf xorl %eax, %eax leave ret .section .text.unlikely,"x" LCOLDE3: .section .text.startup,"x" LHOTE3: .ident "GCC: (tdm-1) 4.9.2" .def _puts; .scl 2; .type 32; .endef .def _scanf; .scl 2; .type 32; .endef .def _printf; .scl 2; .type 32; .endef ~inline .file "forum.c" .section .text.unlikely,"x" LCOLDB0: .text LHOTB0: .p2align 4,,15 .globl _maior .def _maior; .scl 2; .type 32; .endef _maior: movl 4(%esp), %edx movl 8(%esp), %eax cmpl %edx, %eax cmovl %edx, %eax ret .section .text.unlikely,"x" LCOLDE0: .text LHOTE0: .def ___main; .scl 2; .type 32; .endef .section .rdata,"dr" LC1: .ascii "informe o valor das notas: \0" LC2: .ascii "%d\0" LC3: .ascii "%f\12\0" .section .text.unlikely,"x" LCOLDB4: .section .text.startup,"x" LHOTB4: .p2align 4,,15 .globl _main .def _main; .scl 2; .type 32; .endef _main: pushl %ebp movl %esp, %ebp andl $-16, %esp subl $32, %esp call ___main movl $LC1, (%esp) call _puts leal 20(%esp), %eax movl $LC2, (%esp) movl %eax, 4(%esp) call _scanf leal 24(%esp), %eax movl $LC2, (%esp) movl %eax, 4(%esp) call _scanf leal 28(%esp), %eax movl $LC2, (%esp) movl %eax, 4(%esp) call _scanf movl 28(%esp), %eax cmpl %eax, 24(%esp) cmovge 24(%esp), %eax movl 20(%esp), %edx movl $LC3, (%esp) cmpl %edx, %eax cmovl %edx, %eax movl %eax, 4(%esp) call _printf xorl %eax, %eax leave ret .section .text.unlikely,"x" LCOLDE4: .section .text.startup,"x" LHOTE4: .ident "GCC: (tdm-1) 4.9.2" .def _puts; .scl 2; .type 32; .endef .def _scanf; .scl 2; .type 32; .endef .def _printf; .scl 2; .type 32; .endef São diferentes, porém o tempo das tarefas são iguais, no mínimo não a perdas. ~~ / ~~
-
tá e daí! Eu preciso ser super experiente para converse quem, você é e um compilador! Me aprensente um Programador super experiente. Eu eu escuto o que ele tem a dizer. adicionado 2 minutos depois O que fiz foi agregar eficiência, simplicidade e fluidez a um código que já é por si simples de mais. Praticamente um milagre diante de tantas tentativas de fazer do fácil difícil. adicionado 22 minutos depois Você não pode dizer isso para todos os controladores e chips do mundo apenas para processador do seu PC..
-
Quais são as chances para declaração return? /*!< Você acha que vai retorna o que? int ou long long double :p rsrs return( x > y? x:y ); Quando não explicito o tipo por padrão é int. printf( "%d\n", maior(maior(v1,v2),v3)); ( que um ). Se não tem influência na rapidez de execução então é refinamento. Mais ficou bonitinho :3 Já se é correto ou ~correto é subjetivo. inline faz para C++, o que os macros fazem para C ANSI no quesito função. No mesmo quesito otimiza o código em tempo de compilação... assim sendo não preciso de licença para fazer otimização.E fiz assim porque "parecia a coisa certa a ser feita". ~~ / ~~
-
Caras... Se não é prescrito que a função deve ter 3x Parâmetros, então use 2x Parâmetros. Na dica de @cyer Temos também. inline int Maior_de_( int x, int y ) { return( x > y? x:y ); } Para saber o maior de 3: int Maior_de_3_( int x, int y, int z ) { return( Maior_de_( x, Maior_de_( y, z ) ); } Para saber o maior de 4: int Maior_de_4_( int x, int y, int z, int gama ) { return( Maior_de_( x, Maior_de_3_( y, z, gama ) ); } Pata saber o maior de 5: ... Por tanto: #include<stdio.h> /*!< Incluir as rotinas que fazem Entra e Saída (E/S). */ inline maior( int x, int y) { return( x > y? x:y ); } int main( void ){ int v1, v2, v3; printf("informe o valor das notas: \n"); scanf( "%d", &v1 ); scanf( "%d", &v2 ); scanf( "%d", &v3 ); printf( "%d\n", maior( v1, maior( v2, v3 ))); return( 0x0 ); }
-
C++ Como adicionar um loop (5), no programar ...?
Ansi C respondeu ao tópico de Davi Santana 2000 em C/C#/C++
Olá ... @Davi Santana 2000 Desculpe-me, sua pergunta não foi suficiente clara. O que é que você quer? Suponho por interpretação do código que; para cada caso N de teste tenhamos uma entrada com 2 Números Inteiros ( A e B [positivos ou Negativos] ), e que seja exibido na saída todos os Xi números, também inteiros consecutivos ( Xi ± 1 ), que estão entre A <= ... < B. E.i.: Caso seja isso, tenhamos: ENTRADA 1 10 SAíDA 1, 2, 3, 4, 5, 6, 7, 8, 9, E agora você quer repetir novos casos para N Draft_c_program.c #include<stdio.h> #include<stdlib.h> /* Pauser or add your own getch, system("pause") or input loop */ int main ( void ) { /** * * * * * * * * Trecho de código que contém a tarefa a repetir * será escrito onde tem N. Cada interação as variáveis * declaradas serão reinicializadas no interior basicamente * como o programa abrisse e fechasse * a cada intereção de x. */ register char x; for ( x = 0x00; x < 0x05; ++x ) { ... N ... } system ( "PAUSE" ); /*< Adiciona pausa */ return (0x00); } @Davi Santana 2000 *seu programa N, tem problemas com entradas decrescentes. Perguntas mal elaboradas estão tirando o meu tesão. -
Não! E também não há muitos detalhes, se que tenho como especular.
-
Você cria uma estrutura com um vetor interno. Bem, esse não é o uso adequado para estruturas, e nem o propósito da mesma, que é organizar vários tipos primitivos num conjunto mais complexo de dados sortidos. Mesmo que seja divertido acessar tipos primitivos por meio do . busque por exercício mais sofisticados, porém antes trabalhemos com vetores. Este sítio que descobri recentemente contém exercício e tutorias com gabarito para iniciantes, é bastante inspirador porque não são desafios complexos e simples estão na média para todo iniciante que precisa trabalhar principalmente os conceitos. Eu gostei muito AQUI
-
Erro interno, complicado d+
-
Uma ou mais chamadas para collect2 resultaram em erro! É isso!/ Essa aplicação organiza os arquivos .c do projeto para compilar. Aí vemos uma mensagem "no target" "no project". São mensagens comuns para projetos de um só arquivo .c Seja lá o que você tentou compilar um ou mais arquivos não existem. adicionado 4 minutos depois Mostra o Build log
-
Olá ...@Rorgrun ! Importante saber efetivamente a quem pertence a variável idade. Existem muitas. int main (){ struct oi{ int i, idade, titulo, x, secao, zona; // #0 Idade char nome[30], endereco[30]; }; int i, x, nome[30], idade; // #1 Idade oi hey[50]; cout << "Digite a quantidade de cadastros: "; cin >> x; system("cls"); for ( int i = 0; i <= x-1; i++ ){ cin.sync(); cout << "Digite seu nome: "; cin.getline(hey.nome,30); cout << "Digite sua idade: "; cin >> hey.idade; // #2 Idade aqui! cout << "Digite seu titulo: "; cin >> hey.titulo; cout << "Digite sua secao: "; cin >> hey.secao; cout << "Digite sua zona eleitoral: "; cin >> hey.zona; cin.sync(); cout << "Digite seu endereco: "; cin.getline(hey.endereco,30); system("cls"); } if (idade >= 18 && idade <= 59 ){ // A qual das declações acima (0,1,2) você acha ou queria testar? ... Cada idade tem uma circunstância para ser validade. Da maneira que vejo, apenas a idade do caso #1 é testada para todos os cadastros gerados. Na estrutura cada cadastro tem sua .idade, por tanto, essa idade deve ser avaliada. E.i.: Se condicionarmos a avaliação em uma cadastro X qualquer escreveriamos assim: if (hey[ i ].idade >= 18 && hey[ i ].idade <= 59 ) // i é qualquer cadastros entre todos ... Porque é a idade da estrutura de dados que mais me interessa. Fato intrigante é que logo abaixo vemos o acesso de .idade cout << "Idade: "<<hey[ i ].idade<< endl; Daí fico confuso!
-
Olá... Ainda o problema do string? IlustraçãoDoMetodoCompare.cpp /* * Programa: IlustraçãoDoMetodoCompare.cpp * Escrito por: Mauro Britivaldo * Data da Criação: 18/03/2018 * * Propósito: #1 Ilustração para Método Compare do String */ // Programa C++ de Demostração. #include<iostream> using namespace std; int main() { string ListaDeNomes[3] = { "Fulano","Beltrano","Sicrano" }; //< Lista de Nomes com 3 nomes string Nome ( "Sicrano" ); //< Buscaremos o valor do Obejto Nome. int escanear = 0; while (escanear < 3) { if (!ListaDeNomes[ escanear ].compare( Nome )) //< Mét. String para Comparar. { std::cout << "Localizado: " << ListaDeNomes[ escanear ] << endl; } ++escanear; } return 0; } String.compare ( String ) retorna 0 quando não existe diferença entre os termos. Retornando a algoritmo do programa, temos a seguinte possível aplicação. /* * Programa: IlustraçãoDoMetodoCompare2.cpp * Escrito por: Mauro Britivaldo * Data da Criação: 18/03/2018 * * Propósito: Colaboração... */ // C++ Program to demonstrate working to Strings.compare( ) statements. #include<iostream> using namespace std; int main() { string nomes[ 20 ]; float notas[ 20 ]; float media = .0f; int c = 0; do{ cout<<"Digite um nome, caso nau Haja nenhum, digite fim: "; cin>>nomes[ c ]; //! Poderiamos finalizar aqui com IF... cout<<"Digite a nota do aluno: "; cin>>notas[ c ]; media = media + notas[ c ]; c++; }while(nomes[ c - 1 ].compare( "fim" ) && c < 20 ); return 0; } adicionado 24 minutos depois Agora percebi, realmente existe um problema de lógica bem aqui! Agora veja que o c é pós-incrementado, com isso seu valor em nome[ c ] é sempre um novo objeto da lista. Óbvio desta forma que nunca a comparação seria correlata.
-
Essa idade que estamos avaliando, pertence a quem? Acho que deveria ser uma estrutura das do vetor de hey.
-
Tá tudo explicado já. fácil d+, só se não aprendeu a escrever em C. Se esse é o caso. Tem ótimos livros gratuitos na internet vai buscar.
-
getche(a) ? Parei aqui isso não compila. Use scanf.
-
Muito Bom!
-
C++ Cortar energia de um comodo de uma casa de acordo com o dia da semana em c++
Ansi C respondeu ao tópico de edgargoncalveslimajr em C/C#/C++
@santos container Teoricamente é possível, assim já disse toda BASE é feita 0s e 1s. Editado: Como pode ver a lógica é a mesma, porém mais leve! Precisou de apenas 1 tipo char de 1 byte para Representar 1 casa. Ficou mais leve -
Olá... ENUNCIADO Crie um programa que receba um número inteiro não-negativo de segundos e converta-o em horas, minutos e segundos. Para tanto, utilize os operadores / e %. Exemplo: 3665 segundos correspondem a 1 hora, 1 min e 5 segundos. Para resolver essa questão devemos saber o que cada operador faz e qual a relação numérica do tempo. O primeiro item é que / operador Binário Divisão faz isso mesmo divide e se 1 dos operando for flutuante [ Fração sintética exemplo: 1.25 ou 1.0 ] o quociente também é fração sintética caso não, resultado outro inteiro. O segundo % operador Binário Módulos tem por responta o resto de uma divisão não exata. Última coisa é saber as bases do tempo [ pré-escolar já aprendemos que os minutos tem 60 segundo... ] Intercalar esses saberes não é nada "difícil": No primeiro momento é transforma Segundos > Minutos > Horas e exibir. Nada mais que isso, projeto de uma só Fase. ENTRADA 120 Basta agora dividir por 60 segundos e pegar também as sobras. minutos = 120 / 60 resto = 120 % 60 SAÍDA 0 hora, 2 min e 0 segundos. Resposta certa! Analise é imediata, pois 2 * 60 = 120 segundos de Resto 0 é fácil d+
-
C Gostaria de informações sobre a execução de um programa em C
Ansi C respondeu ao tópico de Victor Anastácio em C/C#/C++
#include <stdio.h> #include <stdlib.h> int main() { int matriz[0][0]; int i, j, maior, soma = 0; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { matriz[j] = rand() % 40; printf ("%d\t", matriz[j]); } printf ("\n\n"); } maior = matriz[0][0]; for (i = 1; i < 8; i++) { if (maior < matriz[j]) { maior = matriz[j]; } } printf ("O maior numero da diagonal principal é %d\n", maior); for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { if (i + j == 7) { soma = soma + matriz[j]; } } } printf ("A soma é:%d", soma); } Se a matriz é 8 x 8 então declare como tal. Matriz[0][0] não tem lugar algum na memória. A diagonal principal ocorre quando i == j -
Tu tentou fazer? Tu conheces o que da linguagem C/C++? Mostras até onde consegui ir... no teu exercício. Use o tag <> para posta o código de maneira adequada ele se encontra nas ferramentas da caixa texto ao lado de aspas ''.
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