-
Posts
3.284 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Ansi C postou
-
C Programação C Recebe um texto e mostrar vogais e consoantes em 2 vetores
Ansi C respondeu ao tópico de Fabio M. Nascimento em C/C#/C++
ENTRADA Oi tudoo bem? SAÍDA --------------------------- imprimindo todas as vogais: --------------------------- i u o e ------------------------------- imprimindo todas as consoantes: ------------------------------- O t d B m ? -
C Programação C Recebe um texto e mostrar vogais e consoantes em 2 vetores
Ansi C respondeu ao tópico de Fabio M. Nascimento em C/C#/C++
Olá... boa tarde, 'caraca' eu erraria essa questão porque pegaria as posições, e não as letras. Enunciado [...] um dos vetores deverá receber a cópia das posições que continham vogais e o outro vetor deverá receber a cópia das posições que contém consoantes. [...] preciso urgente de ler mais, e os professores serem mais diretos, custava colocar... [...] um dos vetores deverá receber a cópia das vogais e o outro vetor deverá receber a cópia das consoantes. [...] >.< Editado: Minha ideia a lógica é a mesma ... só código que não, aguardo Debug... /* Programa: forum.c Escrito por: Mauro Britivaldo e Outros ... Data da Criação: 03/10/2018 Propósito: CdHardware */ #include<stdio.h> // Incluir as rotinas que fazem Entra e Saída . #include<stdlib.h> // Incluir as rotinas que fazem uso de memória / conversão de dados. // Converte Inteiro para Strings rsrs void ShowUIntDecimal (unsigned int ValInt) { char UIntCharacter[22], u = 0; unsigned int IntModulos = ValInt; if (ValInt < 10) putchar ('0' + ValInt); else { UIntCharacter[u] = '0' + ValInt - ((IntModulos /= 10 ) * 10); ValInt = IntModulos; ++u; while (ValInt) { UIntCharacter[u] = '0' + ValInt - ((IntModulos /= 10 ) * 10); ValInt = IntModulos; ++u; } if (u > 1 && UIntCharacter[u - 1] == '0') UIntCharacter[u - 1] = '1'; else if (u == 1) { UIntCharacter[++u] = '0'; UIntCharacter[u - 1] = '1'; } while (u > 0) { --u; putchar (UIntCharacter[u]); } } return ; } // Analiza se é vogal char IsVogal (char ValCharacter) { if (ValCharacter < ('Z' + 1)) ValCharacter = (ValCharacter - 'A') + 'a'; switch (ValCharacter) { case 'a':case 'e':case 'i':case 'o':case'u': return 1; default: return 0; } } // Analiza se é Alfabético inline char IsAlpha (char ValCharacter) { return (('a' - 1) < ValCharacter && ValCharacter < ('z' + 1) || ('A' - 1) < ValCharacter && ValCharacter < ('Z' + 1)); } // Captura Strings com Tamanho Personalizado. char* GetString (int ValQtdLetras, char *RefLinha) { int count = 0, ch; while ((ch = getchar ()) == '\n') continue; while (ValQtdLetras > count && ch != EOF && ch != '\n') { *(RefLinha+(count)) = ch, ch = getchar (); ++count; } *(RefLinha+(count)) = '\0'; return RefLinha; } int main (void) { char Linha[701], *PointString; int PosVagais[700], v; int PosConsoantes[700], c; R: PointString = (char*)0; puts ("ENTRE COM FRASE DE NO MAXIMO 700 CARACTERES"); putchar ('<'); PointString = GetString(700, Linha); system ("cls"); // Somente para windows!? v = 0; c = 0; if (PointString) { // Verdadeiro se for diferente de 0. while (*PointString) { // Continua até chegar o fim da linha '\0' if (IsAlpha (*PointString)) // Analiza se é alfabetico if (IsVogal (*PointString)) { // Analiza se alfabetico e também vogal PosVagais[v] = PointString - Linha + 1; ++v; } else { PosConsoantes[c] = PointString - Linha + 1; ++c; } // Se não vogal então é Consoante. ++PointString; } PosVagais[v] = 701; // Limite é de apenas 700 então 701 é marco. PosConsoantes[c] = 701; // || if (c) { puts ("OCORRENCIAS DE CONSOANTES NAS posições"); putchar ('>'); c = 0; while (PosConsoantes[c] < 701) { ShowUIntDecimal (PosConsoantes[c]); // Conversão de Inteiro em Strings e exibindo no prompt. putchar (' '); ++c; } putchar ('\n'); } if (v) { puts ("OCORRENCIAS DE VOGAIS NAS posições"); putchar ('>'); v = 0; while (PosVagais[v] < 701) { ShowUIntDecimal (PosVagais[v]); // Conversão de Inteiro em Strings e exibindo no prompt. putchar (' '); ++v; } putchar ('\n'); } } else puts ("SEM PALAVRAS ..."); putchar ('\n'); puts ("MAIS UMA VEZ, GOSTARIA DE EXECUTAR O APP? (S- PARA SIM)"); putchar ('<'); if ('S' == getchar ()) goto R; return 0; } -
Ola todos! Eu penso que toda confusão para entender o que é vetor, vem da própria palavra quando conjugada a índice piora bastante mesmo. A explicação de @devair1010 é perfeita porque descreve com essência o que realmente existe na memória de um vetor. @WilliamNascimento uma coisa que você pode perceber é que dentro da declaração [ x ], o x pode assumir qualquer valor, incluído negativos, sim isso pois quando copilamos a declaração converte para uma / mais operações de aritmética algo que futuramente será explicado pelo professor, as benditas aritmética de ponteiros que o numero 1 das coisas mais importantes no C ANSI. Essa é uma das partes que mais gosto na linguagem, muito legal mesmo poder estudar ponteiros, poderia ficar horas falando sobre ponteiros... /* Programa: forum.c Escrito por: Mauro Britivaldo Data da Criação: 03/10/2018 Propósito: CdHardware :: Ilustração #1 */ #include<stdio.h> // Incluir as rotinas que fazem Entra e Saída . #include<stdlib.h> // Incluir as rotinas que fazem uso de memória / conversão de dados. int main (void) { int i, vetor[10] = {1,2,3,4,5,6,7,8,9,10}; // Inicializado vetor na DECLARAÇÃO i = 0; // Inicializar contador de células de memória a partir de ZERO while (10 > i) {printf ("%d ", vetor[i]); i = 1 + i;} return 0; } Observe ou execute esse exemplo, verás que cada 1 dos 10 números nesta ordem serão exibidos. Naturalmente, cada um deles ocupa um lugarzinho na memória que começa no local onde o numeral 1 foi gravado e termina no local onde o numeral 10 foi gravado. Sim, poderíamos dizer desta forma e de outras também. Se o nosso vetor tem 10 células na memória e i = 0 i é a primeira célula de memória, portanto i = 9 é a última logo o índice é um valor dentre todos que aponta para aquela célula na memória. Atenção! Variável índice só deve assumir valores entre 0 e 10 - 1, se considerar 10 = tamanho_do_vetor, seu índice é = {0 ... tamanho - 1} para qualquer que seja tamanho maior que 0. Isso!!! O tamanho é sempre ser maior que 0. Por que começar por 0 ? Por conta da aritmética, pois todo nome de vetor a sua primeira célula na memória, em seguida a segunda célula é a primeira + 1, a terceira é a primeira + 2 ... Isso vai para frente até o limite que em vosso exemplo é a primeira + 9 igual a 10. Isso foi bem ilustrado aqui: As seguintes declarações ... while (10 > i) {printf ("%d ", vetor[i]); i = 1 + i;} while (10 > i) {printf ("%d ", *(vetor + i)); i = 1 + i;} são equivalentes. Na primeira a sintaxe mais comum de vetores, na segundo algo mais C da vida, os ponteiros. Penso que a sintaxe de ponteiros ilustrem melhor o comportamento na memória no caso dos vetores.
-
forum.c /* Programa: forum.c Escrito por: Mauro Britivaldo Data da Criação: 15/03/2018 Propósito: Colaborar com membro @dellurks */ #include<stdio.h> // Incluir as rotinas que fazem Entra e Saída . #include<stdlib.h> // Incluir as rotinas que fazem uso de memória. int main() { float PT1, PT2, MT, PL1, PL2, ML, media; printf ("Digite a primeira nota de prova teorica:\n"); scanf ("%f", &PT1); printf ("Digite a segunda nota de prova teorica:\n"); scanf ("%f", &PT2); MT = (PT1 + PT2) / 2; printf ("Sua media teorica e:%f\n", MT); printf ("Digite a primeira nota de prova Pratica:\n"); scanf ("%f", &PL1); printf ("Digite a segunda nota de prova Pratica:\n"); scanf ("%f", &PL2); ML = (PL1 + PL2) / 2.0; printf ("Sua media pratica e:%f\n", ML); media = MT * 0.6 + ML * 0.4; printf ("Sua media final e: %f\n", media); if (media >= 7) { printf ("Aluno aprovado com media: %f\n", media); } else { printf ("Aluno reprovado com media: %f\n", media); } getch(); return 0; } Observe que; Na linguagem números fracionados (flutuantes) literais não usamos a vírgula e sim o ponto, de acordo com a notação temos ABNT 1,0 equivalente ANSI 1.0 A vírgula é um operador semi-ponto-vírgula, ou seja, faz quase a mesma coisa que ponto-vírgula porém operando dentro e fora de declarações como se dado instrução ainda tivesse continuidade até finalizar com ponto-vírgula. Foi isso que acontecer as multiplicações eram realizadas com 0.
-
Faz uma conta no URI e Parabéns passou 100%
-
C Programação C Recebe um texto e mostrar vogais e consoantes em 2 vetores
Ansi C respondeu ao tópico de Fabio M. Nascimento em C/C#/C++
Antes de tudo, procure conteúdo de qualidade para ler se ainda não tem. printf("Digite a frase:\n"); scanf("%[^\n]s",&frase[cont]); /** Apesar da função scanf ser prática eu lhe atribui pouca qualidade. Outra coisa, já que está no começo da aprendizagem então presta mais atenção Na sintaxe, porque e de doer os olhos uma coisa assim &frase[0] ou algo do tipo Vou subir lá pra cima, se vai subir e para cima mesmo, ou seja, é redundante. */ CORRETO: puts ("Digite a frase:"); gets (frase); /** Existem muitos métodos na linguagem scanf não é melhor deles. Use-a apenas para pegar números. */ -
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++
Olá todo! Tudo está ligado, desligado. Apenas variações de 0-1. Deu-me uma insight: Inicialmente com penas uma variável é possível representar toda casa porque o tipo int tem 32 zeros ou 32 uns. Só precisa operar cada um deles, seja com operadores Bitwise, ou com Struct e Fields. Na media com a mesma lógica apresentada por @cyer @vangodp @edgargoncalveslimajr diminuiríamos tanto em código, velocidade e espaço na memória de tal forma que apenas unsigned int[ 100000 ] representaria o statos de todas as casas na cidade onde moro. struct casa{ int energia_ligada: 1; int energia_desligada: 1; int jardim: 1; int sala_de_visita: 1; int cozinha: 1; int banheiro: 1; int quarto1: 1; int quarto2: 1; int quarto3: 1; int quarto4: 1; }; Mais legal é que para desligar tudo basta fazer: casa = 0; e para ligar tudo basta fazer algo como: casa = 0b1111111111 Minha intromissão foi só pra isso mesmo. Quero ver esse código e bem levinho. Vou fazer aqui, e a medida que for elaborando ousarei posta-lo. -
Não sei dizer precisamente, o que precisamente acontece, entretanto: As funções possui espaços na pilha reservado, daí, definir referencias (parâmetros) por meio de VLA (isso que você esta fazendo) representa risco a instabilidade de toda pilha porque tais valores indefinidos nela poderiam atingir patamares muitos maiores que sua capacidade desconhecida pelo programador, logo essa é um medida convencionada. Por enquanto, essa medida não acontece em C'99, em C# segundo, e também não encontramos essa medida em C'11, apenas por enquanto. Porém C++ 0x e afins, tal medida já existe. Contudo é mais fácil adicional pilha dinâmica em C++ que remover das outras. Isso é o que penso.
-
Não use o parâmetro var dentro das chaves no parâmetro vetor.
-
Desculpe os erros na sintaxe, é que não leio sobre C++, somente C.
-
@Eizy Por última dica, tente os métodos da função. Melhor exemplo que pude fazer: #include <iostream> #include <string.h> using namespace std; int main() { unsigned int choose; Reload: cout << "MENU INICIAR" << endl; cout << "OPTION: 1 2 3 ou 4: "; cin >> choose; switch (choose) { case 1: cout << "Option: " << choose << "Muito bem!" << endl; break; case 2: cout << "Option: " << choose << "Muito bem!" << endl; break; case 3: cout << "Option: " << choose << "Muito bem!" << endl; break; case 4: cout << "Option: " << choose << "Muito bem!" << endl; break; default : cin.clear(); cin.ignore(); goto Reload; } return 0; }
-
Agora acho que entendi melhor, de fato a entrada errada não sai do stdin (Buffer de entrada). Então você tem que limpar. para C eu uso estes comandos: char ch = getchar (); while (ch != EOF && ch != '\n') ch = getchar (); Suponho que o equivalente em C++ seja: char ch; cin >> ch; while (ch != EOF && ch != '\n') cin >> ch; Tente essa alternativa para liquidar o buffer de entrada.
-
Ola @Eizy antes que o procedimento de inserção possa acontecer, o procedimento avalia se o tipo de variável e condizente com tipo de input, por exemplo: ENTRADA Teste de cin para tipos int Se cin >> [espera um inteiro aqui] e a entrada e tal qual acima. Então se tinha zero antes, continua com zero depois que falhou , porém se não tinha Zero no valor na variável agora tem, porque zero será gravado nela. Talvez isso lhe de uma ideia do que fazer agora.
-
Ola @GiovanniDosSantosReale Boa noite. Você deve saber que para comparar strings primitivas, essa que você esta usando formadas por um vetor de caracteres (char), devemos usar de função específica, pois a linguagem não entende comparações diretas tais qual a que tentasse conseguir. Para tanto usamos o procedimento, ou função se preferir chamar assim, strcmp(). Ela faz parte da biblioteca cstring. Para melhor entender veja a documentação aqui com detalhes do uso mais adequado para função que compara strings.
-
Que tipo de problema, por exemplo "não consigo imaginar como acontece" ou "consigo imaginar acontecendo mais não sei escrever em código". Qual dos dois lhe representa melhor? Edita teu código postando com code tag <> conforme explicado nesse Botão code <> : como e para que usar?
-
Por nada, sinto que quase não forneci dado algum. Mas nem por isso deixei de ser curioso, portanto, gostaria de ver seu trabalho finalizado, aqui mesmo no fórum quando o tiver terminado. Boa Sorte.
-
Certo. Não diria que realmente, pois realmente não precisa, porque por eliminação o que não é o maior e o menor. Para ilustra que o que estou dizendo não é bobagem observe o exemplo abaixo. Daí fica bem visível a minha observação. thebiggest.c /* Escrito por: Mauro Britivaldo Data da Criação: 01 - 03 - 018 Propósito: Forum CdHardware */ #include <stdio.h> // Incluir as rotinas que fazem Entra e Saída (E/S). #include <stdlib.h> // Incluir as rotinas que fazem uso da memória. inline char theBigNumberIs (int valNum0, int valNum1) { return (valNum0 < valNum1); } int main (void) { puts ("SE O 1o FOR MAIOR, então ZERO SE O 2a FOR MAIOR então 1"); printf ("RESPOSTA: %u\n", theBigNumberIs (10,12)); return 0; } Para que preciso de uma função para me dizer qual é o menor??? Deve esta enxergando errado! Discordo! Em momento algum isso foi bem claro. Poderíamos dizer que cada linha de teste constitui de dois números e que os casos de teste se encerram quando um deles é negativo e ainda seria necessário o WHILE. Por tanto, isso não exclui a dualidade de sentido do enunciado quando, bastava para tanto dizer que dentro os números digitados. Mas tudo certo. Resolver problemas usando funções, muitas vezes é pseudo para usando paradigma procedural, coisa estremante comum e corriqueira da programação. Daí usar isso com requisito para usar duas funções quando soluções são feitas apenas com uma unica é limitar o escopo do pensamento do programador (estudante). Mas tudo certo.
-
Olá todos, Achei curiosa a descrição do problema: Determine o menor e maior só que utilizando funções, e a condição da parada é quando digitar um numero negativo. É realmente necessário duas funções? Ou é por exemplo: Utilizando funções escreva um programa que realize a soma de dois números (Um só função resolve). Pois esse também seria o caso do problema em questão, com isso uma função que determina o maior de dois números já é o bastante. Por último, é para determinar o maior e o menor dentre dois números ou dentre todos os números até então 1 negativo ser digitado? Isso não me ficou bem claro.
-
C++ Projeto Racionamento de energia de uma casa
Ansi C respondeu ao tópico de edgargoncalveslimajr em C/C#/C++
Se fosse mulher e gostosa! -
C Função troca e preenchimento de estrutura
Ansi C respondeu ao tópico de Cristian Kirsch Foesch em C/C#/C++
Você pode continuar esperando a boa vontade dos nossos colegas. Entretanto aconselho a ir você mesmo fazendo logo de uma vez, não que ficaria sem ajuda mais por conta do horário o risco é de ficar. Lei essa artigo aqui -
C Função troca e preenchimento de estrutura
Ansi C respondeu ao tópico de Cristian Kirsch Foesch em C/C#/C++
Não há o que mostrar, pois ainda não vejo estrutura, exceto o vetor notas; vetores são estruturas primitivas, porém acredito que esteja falando de struct do tipo mais complexo. -
Ao dividir 1 por 3 o resultado é 0. Escreva (1/3.0) e resolverá esse caso.
-
C++ Exercício de programação em C++ no code Blocks
Ansi C respondeu ao tópico de EIGHT RxXD em C/C#/C++
Por exemplo o exercício que estou fazendo, apresenta todos os resultados esperados para todas as entras que eu consigo pensar, entretanto mesma a ferramenta de teste uDebug entregando os resultados iguais, os juízes (máquina analisadora) verifica meus código com 100% ou 30% de erro. Daí a armadilha que me refiro é tem exercício que mesmo certo tem que ser exatamente como eles querem. -
C++ Exercício de programação em C++ no code Blocks
Ansi C respondeu ao tópico de EIGHT RxXD em C/C#/C++
Só não exagere, URI é cheia de armadilhas. Eu por exemplo fui pego pela 2631, estou atolado nesse faz uma semana. -
Poste o código de maneira adequada use o botão <> na caixa de edição de mensagem.
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