-
Posts
6.318 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que devair1010 postou
-
@Dev0011 e você quer transmitir esses dados para uma única tv philco ? , ou muitas outras ? se for apenas em uma , você pode conectar pela outra saída de vídeo do seu pc , ou a VGA ou a HDMI ou dvi .
-
Estou montando um PC
devair1010 respondeu ao tópico de rickinhoohh em Montagem e upgrade de computadores de mesa
@rickinhoohh muito boa essa configuração , e esses componentes e mais esse monitor https://www.pichau.com.br/monitor-gamer-pichau-24-full-HD-curvo-athen-c24m-1ms-144hz-HDMI-dp-pgm-ac24m vai ficar em 8k . . . ! -
C Preciso ordenar os nomes e os tempos pela ordem de chegada, pra colocar no case3
devair1010 respondeu ao tópico de Leticia da Silva em C/C#/C++
@Leticia da Silva existe vários métodos de ordenação de vetores , e os mais conhecidos pode ser o bubbleSort , selectionSort , e outros . . . ! , mas esses tem um conceito mais apurado e mais difícil de fazer e entender e demora mais tempo para fazer a organização , e tem esse , ancoraSort , que considero bem simples e fácil e rápido , pois na primeira passada ele já decide o menor ou o maior número que existe no vetor , dependendo da necessidade , e nesse seu código , você cadastra o nome e o tempo , e o tempo é o tempo gasto por cada um dos competidores , e quanto menor o tempo , mais em primeiro chegou , assim a ordenação pode classificar dos que chegaram em primeiro para os que chegaram por último , e assim , depois da ordenação o primeiro é o vencedor : e nesse vídeo pode se ver como é o funcionamento dos vários métodos: cada passada da barra vermelha representa uma volta no loop mais interno , e as barras brancas são os números , que vão sendo organizados do menor para o maior . representação Gráfica dos métodos de ordenação : https://www.youtube.com/watch?v=rQTQF46o16k https://www.youtube.com/watch?v=kPRA0W1kECg&t=75s #include <stdio.h> #include <windows.h> #include <stdlib.h> #define NUMERO_DE_CORREDORES 5 #define TAMANHO_MAXIMO_DO_NOME 500 #define _h GetStdHandle(STD_OUTPUT_HANDLE) int ordenacao ( char nome[][500] , float* tempo ); char gravar_arq( char nome[][500] , float* tempo ); char ler_arq ( char nome[][500] , float* tempo ); float informacao(char nome[][TAMANHO_MAXIMO_DO_NOME], float tempo[NUMERO_DE_CORREDORES]) { int i; SetConsoleTextAttribute( _h , 12 + ( 10 << 4 ) ); printf(" Nome Tempo \n"); for( int i=0; i<5; i++ ) /// alguns compiladores / IDE's aceitam criar a variAvel dntro do Loop printf("\n %8s == %8.2f ", nome[i], tempo[i]); } void cadastro( char nome[][ TAMANHO_MAXIMO_DO_NOME ] , double tempo[ NUMERO_DE_CORREDORES ] ) { int i = 0; int maior = 0; double total = 0; for( int i=0; i<NUMERO_DE_CORREDORES; i++ ) { fflush(stdin); printf("\nInforme o nome do corredor %d: ", i+1); fgets(nome[i], TAMANHO_MAXIMO_DO_NOME,stdin); printf("Insira o tempo de %s: ", nome[i]); scanf("%lf", &tempo[i]); } } int main() { int cor_letra , cor_fundo; CONSOLE_SCREEN_BUFFER_INFO c; if( GetConsoleScreenBufferInfo( _h , & c ) ) { cor_letra = ( c.wAttributes & 0xFF ) & 0x0F; cor_fundo = ((c.wAttributes & 0xFF ) >> 4 ) & 0x0F; } int opcao; char nome [ NUMERO_DE_CORREDORES ][ TAMANHO_MAXIMO_DO_NOME ] = { "kiko" ,"lolipop" ,"juju" ,"kolip" ,"lopol" }; float tempo[ NUMERO_DE_CORREDORES ] = { 2.21 , 0.98 , 1.83 , 1.26 , 2.02 }; float numeros[] = { 0.0 }; do { SetConsoleTextAttribute( _h , 11 + ( 0 << 4 ) ); printf("\n=======================\n\n" " 1 - Cadastro de Corredores\n" " 2 - informações \n" " 3 - ClassificaCAo Geral \n" " 4 - Gravar Arquivo \n" " 5 - Ler Arquivo \n" " 6 - Sair \n" " Escolha Uma opcao " ); scanf( "%d" , & opcao ); printf("\n\n"); SetConsoleTextAttribute( _h , 7 + ( 0 << 4 ) ); switch( opcao ) { case 1: cadastro(nome,tempo); break; case 2: informacao(nome, tempo); break; case 3: ordenacao(nome, tempo); break; case 4: gravar_arq(nome,tempo); break; case 5: ler_arq(nome, tempo); break; case 6: printf("\n\n\tSainDo Do Programa . . . !"); break; default: printf("\nOpCAo InvaLida . . . !\n"); } } while( opcao != 6 ); printf("\n\n\n"); return 0; } int ordenacao( char nome[][500] , float* tempo ) { char ax[500]; printf("OrdenaCAo dos competidores por tempo\n" ); for( int i=0; i<NUMERO_DE_CORREDORES; i++ ) { for( int j=i+1; j<NUMERO_DE_CORREDORES; j++ ) { if( tempo[i] > tempo[j] ) { float aux = tempo[i]; tempo[i] = tempo[j]; tempo[j] = aux; strcpy( ax , nome[i] ); strcpy( nome[i] , nome[j] ); strcpy( nome[j] , ax ); } } } return 0; } char gravar_arq( char nome[][500] , float* tempo ) { return NULL; } char ler_arq ( char nome[][500] , float* tempo ) { return NULL; } -
pc com outra cpu liga apenas algumas vezes
devair1010 respondeu ao tópico de raonyreis13 em Computador não liga ou não dá vídeo
@raonyreis13 @raonyreis13 e você pode postar a configuração desse seu pc , o nome e a marca da placa-mãe , da fonte , e memória ? -
C Preciso ordenar os nomes e os tempos pela ordem de chegada, pra colocar no case3
devair1010 respondeu ao tópico de Leticia da Silva em C/C#/C++
@Leticia da Silva na hora de ordenar pelo tempo , ao modificar a posição no vetor tempo , modifique também no vetor de nomes . o que está na mesma posição . -
C configuração do Editor do IDE code::Blocks
devair1010 respondeu ao tópico de devair1010 em C/C#/C++
@JorgeGus obrigado , me salvou de novo ! -
pc com outra cpu liga apenas algumas vezes
devair1010 respondeu ao tópico de raonyreis13 em Computador não liga ou não dá vídeo
@raonyreis13 qual placa você está usando com esse xeon ? , você já viu se ela é compatível com esse xeon ?, e não basta trocar o processador e tã tudo certo , não , precisa formaTar e instalar o windows ou linux de novo , pois os driver's são outro de cada processador . -
C Identificar número dentro de um vetor e dizer se já foi digitado antes
devair1010 respondeu ao tópico de Belírio em C/C#/C++
@Belírio não está completo , ali só está testando se tem número repetido ou não , precisa incluir esse trecho no seu código do #1 post , e ficaria assim : #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #define _h GetStdHandle(STD_OUTPUT_HANDLE) int main () { int valor[10]; int i; int cor_letra, cor_fundo; CONSOLE_SCREEN_BUFFER_INFO c; if(GetConsoleScreenBufferInfo( _h, &c)) { cor_letra = ( c.wAttributes & 0xFF) & 0x0F; cor_fundo = ((c.wAttributes & 0xFF) >> 4) & 0x0F; } for (i=0; i<10; i++) { printf("\n\t||Digite 10 valores diferentes: "); scanf("%d",&valor[i]); for (int j = 0; j < i; j++) { if (valor[j] == valor[i]) { printf("%d -> Numero repetido\n", valor[i]); i -= 1; break; } } } SetConsoleTextAttribute(_h, 12 + ( 10 << 4 ) ); printf("\n\tOs valores armazenados são: %d\n\n",i); for( int i=0; i<10; i++) printf("%3d \n",valor[i] ); SetConsoleTextAttribute(_h, cor_letra + ( cor_fundo << 4 ) ); printf("\n\n\n"); return 0; } -
C Identificar número dentro de um vetor e dizer se já foi digitado antes
devair1010 respondeu ao tópico de Belírio em C/C#/C++
@.if realmente , o enunciado , diz para apenas informar que o número já foi digitado , e então não precisa que ao digitar um outro número , ele não exista no vetor , e no Replit está dando um erro que não sei como resolver mesmo . -
C Preenchimento de valor aleatorio a vetor em C
devair1010 respondeu ao tópico de alan.modesto em C/C#/C++
@alan.modesto você não disse que erro que dá , mas aqui no codeblocks , não deu nenhum erro , não , apenas também não fez nada , e mostrou uma tela toda preta , mas ele não funciona por que você não inicializou a variável "i" , assim o valor é desconhecido e o compilador termina a execução para não gravar dados em local que não pode , e acertando isso , seria assim #include <stdio.h> #include <stdlib.h> #include <time.h> #define TAM 3 void preencherAleatorio (int vetor[], int tamanho) { //declaração de variáveis int i = 0; int igual = 0; int j = 0; do // faça { vetor[i] = rand() % tamanho; // sorteia um número igual = 0; for(j = 0; j < i; j++) // percorre a parte do vetor já preenchida { if(vetor[j] == vetor[i]) igual = 1; // número repetido } if(igual == 0) // significa que o elemento não se repetiu i++; } while(i < tamanho); // enquanto não for sorteado TAM números diferentes for(i = 0; i < tamanho; i++) { printf("%d ", vetor[i]); } printf("\n\n"); } //implementação das funções int exibirVetor (int vetor[], int tamanho, int vetor1[]) { //declaração de variáveis int i, j,cont = 0; // passando um vetor dentro de outro para seguir ordem de posiçao printf ("\nVetor: "); for (i=0 ; i<tamanho; i++) { if(vetor1[vetor[i]] <= vetor1[vetor[i+1]]) { cont++; } printf ("%d ", vetor1[vetor[i]]); } // 1 para crescente, 0 para não crescente if( cont == tamanho-1) { return 1; } else { return 0; } printf ("\n\n"); } int main(void) { srand(time(NULL)); int A[TAM] = {5,10,11} ; int B[TAM] = {2,1,0} ; // usando um B pré ordenado para testar int C[TAM]; int resp; preencherAleatorio(C, TAM); resp = exibirVetor(C, TAM, A); printf ("\nVetor: %d ", resp); return 0; } -
C NÂO consigo FAZER O SISTEMA DE LOGIN FUNCIONOR
devair1010 respondeu ao tópico de marcos holanda12 em C/C#/C++
@marcos holanda12 a função de login está , sim ,funcionando , e pode ser também de outras formas #include<stdio.h> #include<locale.h> #include<string.h> int login(){ char login[15] = "teste"; //Tem que ter mais espaço que a string. Pelo menos 1 a mais que a palavra. char login1[15]; //Pode ser do mesmo tamanho que o login char senha[15] = "teste"; char senha1[15]; printf("LOGIN: "); scanf("%s",login1); //String se lê com %s if (strcmp(login, login1) == 0) //strcmp() é uma função da biblioteca string.h que compara 2 strings. Se for igual a 0 é porque as duas são iguais. { printf("Logado\n"); } else { printf("error\n"); } return 0; } -
C Identificar número dentro de um vetor e dizer se já foi digitado antes
devair1010 respondeu ao tópico de Belírio em C/C#/C++
@Belírio esse loop while while (j--) if (valor[i]==valor[j-1]) { printf("\n\tOs valores armazenados são: %d",i); } não resolve nada , apenas mostra uma msg , e então o que precisa é verificar se o número já está colocado em alguma das posições do vetor , e se não houver nenhum igual , aí coloca esse número nessa posição "[ i ]" do vetor , e você pode testar isso dentro do loop FOR mesmo , mas o loop ficaria grande e resolvendo muitas coisas , então use uma função que verifica o número e retorna 1 se já tem o número no vetor ou retorna zero se não , #include<stdio.h> int verifica( int*, int, int ); int main () { int valor[10] = {0}; /// todas as posições de vetor inicializadas com valor zero int i; int ret = 0; int numero = 0; printf("\n\t||____* Digite 10 valores diferentes -:\n\n"); for (i=0; i<10; i++) { do { printf(" %d%c nUmero ", i+1 , 167 ); /// o 167 Eh o cOdigo ASCII do sImbolo º ordinal scanf( "%d", & numero ); ret = verifica( valor, i, numero ); printf("valor de Retorno da FunCAo = %3d\n",ret); if ( ret == 1 ) { printf("\n\tEste valor já foi digitado, digite um valor diferente\n"); } } while( ret ); /// repete enquanto achar no vetor um numero igual ao digitado valor[ i ] = numero; /// finalmente armazena o nUmero no vetor printf( "\n\n\n" ); } printf("\n\tOs valores armazenados sAo: %d nUmeros . . . !\n\n" , i ); for( i=0; i<10; i++ ) printf( "\t%3d PosiCAo = %3d\n" , i , valor[ i ] ); printf( "\n\n\n" ); return 0; } int verifica( int* v, int tam, int num ) { printf("tam ---= %3d\n",tam); printf("num ---= %3d\n",num); /// ver se a funCAo recebeu os valores corretos for( int j=0; j<tam; j++ ) /// alguns compiladores aceitam cria a variAvel dentro do Loop { printf("v[ %d ] = %3d\n",j,v[j] ); /// mostra a valor que já esta no vetor if( v[ j ] == num ) /// testa se o nUmero Eh igual em cada uma das posições do veTor return 1; /// achou um numero igual ; já no vetor } return 0; /// retorna zero pois o nUmero não tem nenhum outro igual } -
@Fabi66 @Fabi66 para calcular a idade você subtrai a data de nascimento da Data Atual , usando a função #include <time.h> char string[9] = {""}; /// 8 espacos para a Data e um para o '\0' finalizador de string _strdate( string ); /// pega a data atual e no idioma inglês e essa setlocale , costuma não funcionar bem não , e você está armazenando os dados em string's simples e gravando direto no arquivo , mas se você quiser mostrar esses dados terá muito trabalho , e se for modificar ou excluir algum deles , mais difícil ainda , e de modo simples para um iniciante você poderia usar essa mesmas variáveis como sendo matriz de string's , assim esses dados ficariam armazenados nas matrizes , e você pode modificar alguma coisa mais facilmente , e no final , quando for sair do programa , faz a gravação no arquivo . e um modo mais avançado você pode usar struct ou typedef struct : #include <stdio.h> #include <time.h> #include <stdlib.h> #include <locale.h> #include <string.h> typedef struct { char nome [255]; char cpf [255]; char telefone [255]; char endereco [255]; char data_de_nascimento [255]; char email [255]; char data_do_diagnostico[255]; char comorbidade [255]; int contador; } Dados; /// int opcao = 0; int tela_login() { char login[15] = "2264585"; char login1[15]; char senha[15] = "2264585"; char senha1[15]; int login_efetuado = 0; while( login_efetuado == 1 ) { printf("LOGIN: \n"); scanf("%s", login1); printf("SENHA: \n"); scanf("%s", senha1); if (strcmp(login, login1) == 0 && strcmp(senha, senha1) == 0) { printf("\n\nLOGADO!\n\n"); login_efetuado = 1; } else { printf("\n\nDADOS INVALIDOS!\n\n"); } } return login_efetuado; } int mostrar_menu() { int opcao = 0; printf( " ************** \n" " *** SEJA BEM-VINDO *** \n" " ********************** \n" " 0 ) - MOSTRAR DADOS \n" " 1 ) - CADASTRO DE PACIENTES \n" " 2 ) - SAIR DO SISTEMA \n" " DIGITE A OPCAO DESEJADA: "); scanf("%d", &opcao); getchar(); return opcao; } char *remove_nova_linha(char *texto) { char *pos; if ((pos=strchr(texto, '\n')) != NULL) *pos = '\0'; return texto; } void verificar_grupo_risco(char *data_de_nascimento, char *comorbidade, char *endereco , int idade ) { if (strcmp(comorbidade, "") == 0 ) return; // TODO: Calcular a idade /// int idade = 0; // TODO: pegar o CEP do endereco char cep[20] = ""; if (idade > 65) /// idade maior de 65 { FILE *ponteiro = fopen("grupo_risco.txt","a+"); fprintf(ponteiro, "%d, %s\n", idade, cep); fclose(ponteiro); } } void cadastro_pacientes(char data_Atual[]) { char nome [255]; char cpf [255]; char telefone [255]; char endereco [255]; char data_de_nascimento [255]; char email [255]; char data_do_diagnostico[255]; char comorbidade [255]; int contador ; int idade = 0; FILE *ponteiro; char d[3]; char m[3]; char a[5]; d[0] = data_Atual[3]; d[1] = data_Atual[4]; d[2] = 0 ; m[0] = data_Atual[0]; m[1] = data_Atual[1]; m[2] = 0 ; a[0] = '2' ; a[1] = '0' ; a[2] = data_Atual[6]; a[3] = data_Atual[7]; a[4] = 0 ; int dia = atoi (d); int mes = atoi (m); int ano = atoi (a); printf( "\n\tData AtuaL Em PortuguEs => %d / %d / %d", dia,mes,ano); printf("\n\n Adicione os dados do Cliente\n"); ponteiro = fopen("pacientes.txt","a+"); if( ponteiro == NULL ) ponteiro = fopen( "pacientes.txt", "w" ); while(fscanf( ponteiro, "%s%s%s%s%s%s%s%s", nome, cpf, telefone, endereco, data_de_nascimento, email, data_do_diagnostico, comorbidade ) != EOF ) contador++ ; do { printf( " Digite o nome do Paciente -------------------------: " ); fgets ( nome, 255, stdin ); printf( " Digite o CPF do Paciente --------------------------: " ); fgets ( cpf, 255, stdin ); printf( " Digite o Telefone do Paciente ---------------------: " ); fgets ( telefone, 255, stdin ); printf( " Digite o Endereco do Paciente ---------------------: " ); fgets ( endereco, 255, stdin ); printf( " Digite a Data de Nascimento do Paciente (ddmmaaa) -: " ); /// 8 numeros 2 para dia 2 para mes 4 para ano tudo junto sem espaCo fgets ( data_de_nascimento, 255, stdin ); printf( " Digite o Email do Paciente ------------------------: " ); fgets ( email, 255, stdin ); printf( " Digite a Data do Diagnostico do Paciente ----------: " ); fgets ( data_do_diagnostico, 255, stdin ); printf( " Digite a Comorbidade do Paciente ------------------: " ); fgets ( comorbidade, 255, stdin ); printf( " Deseja cadastrar mais Paciente ? ------------------: " "\n Digite 1 (SIM), Digite qualquer numero (não) ------: " ); scanf("%d", &contador); fprintf(ponteiro, "Paciente ----------------------: %s, ", remove_nova_linha(nome )); fprintf(ponteiro, "CPF ---------------------------: %s, ", remove_nova_linha(cpf )); fprintf(ponteiro, "Telefone ----------------------: %s, ", remove_nova_linha(telefone )); fprintf(ponteiro, "Endereço ----------------------: %s, ", remove_nova_linha(endereco )); fprintf(ponteiro, "Data de Nascimento (ddmmaaaa) -: %s, ", remove_nova_linha(data_de_nascimento )); fprintf(ponteiro, "Email -------------------------: %s, ", remove_nova_linha(email )); fprintf(ponteiro, "Data do Diagnóstico -----------: %s, ", remove_nova_linha(data_do_diagnostico)); fprintf(ponteiro, "Comorbidade -------------------: %s\n", remove_nova_linha(comorbidade )); /// calcular a idade do paciente char ano_nasc[5]; ano_nasc[0] = data_de_nascimento[4]; ano_nasc[1] = data_de_nascimento[5]; ano_nasc[2] = data_de_nascimento[6]; ano_nasc[3] = data_de_nascimento[7]; ano_nasc[4] = 0 ; idade = ano - atoi( ano_nasc ); printf("\n Idade Do PacienTe = %d\n\n" , idade ); /// verifique se possui comorbidade /// verifique se é 65+ /// salva em um arquivo de texto o CEP e a idade verificar_grupo_risco(data_de_nascimento, comorbidade, endereco , idade ); } while(contador == 1); fclose(ponteiro); system("pause"); } void cadastro_corretores() { printf("\n\nAdicione os dados do Corretor\n"); } int main() { setlocale(LC_ALL, ""); printf ("Localidade corrente dessa Regiao: %s\n", setlocale(LC_ALL,NULL) ); char dateStr[9]; // a data tem 6 dígitos e mais 2 barras e hum '\0' fim de string char timeStr[9]; _strdate( dateStr); /// pega a data atual printf("\n\t\tData Atual Em inglês ==> %s\n\n\n",dateStr); int ret = tela_login(); int opcao = mostrar_menu(); switch (opcao) { case 1: // Gravar Pacientes cadastro_pacientes(dateStr); break; case 2: // Sair break; default: printf("Opção Invalida!"); break; } return 0; }
-
@Leonan sm @Leonan sm é bom que a função int main fique no início do código , e as outras funções no final depois da main , e esse método de ordenação de vetores "bubbleSort" é mais trabalhoso , que esse aqui : void ancoraSort(int arr[], int n) { for( int i=0; i<n; i++) for( int j=i+1; j<n; j++) if(arr[i] > arr[j]) { int aux = arr[i]; arr[i] = arr[j]; arr[j] = aux; } } e seu código ficou assim // C program for implementation of Bubble sort #include <stdio.h> void bubbleSort(int arr[], int n ); void ancoraSort(int arr[], int n ); void printArray(int arr[], int size); void printArray(int arr[], int size); int main() { int numeros_ale[] = {0,581,2,147,87,8,97,54,96,9,6,58,541,15,25,47,85,12,35}; /// vetor criado e preenchida para não precisar pegar os numeros do teclado int qtd = sizeof(numeros_ale) / sizeof(numeros_ale[0]); /// pega o tamanho do vetor bubbleSort(numeros_ale , qtd ); /// envia o vetor e o tamanho para a funCAo printf("\tCom bubbleSort:\n"); printArray(numeros_ale , qtd ); ancoraSort(numeros_ale , qtd ); printf("\tCom ancoraSort:\n"); printArray(numeros_ale , qtd ); return 0; } void swap(int* xp, int* yp) { int temp = *xp; *xp = *yp; *yp = temp; } // A function to implement bubble sort void bubbleSort(int arr[], int n) { int i, j; for (i = 0; i < n - 1; i++) // Last i elements are already in place for (j = 0; j < n - i - 1; j++) if (arr[j] > arr[j + 1]) swap(&arr[j], &arr[j + 1]); } /* Function to print an array */ void printArray(int arr[], int size) { int i; for (i = 0; i < size; i++) printf("%d ", arr[i]); printf("\n\n"); } void ancoraSort(int arr[], int n) { for( int i=0; i<n; i++) for( int j=i+1; j<n; j++) if(arr[i] > arr[j]) { int aux = arr[i]; arr[i] = arr[j]; arr[j] = aux; } }
-
C código de programação circuito atmega328p - projeto
devair1010 respondeu ao tópico de Rafael Magno em C/C#/C++
@Rafael Magno tem muitos erros nesse seu código , faltam funções e variáveis que nem foram declaradas , e você não tem nenhuma biblioteca para manipular o display e outras também para o teclado etc . . . ! , e esse código está bem gigante mesmo , melhor ir fazendo aos poucos por parte e testando até que esteja funcionando bem e só depois passar para outras coisas , poste um outro código mais simples que conseguir fazer . -
@CarlosChZ instale esse dev c++ embarcadero , ele funciona bem , sem precisar configurar e nem instalar mais nada https://www.embarcadero.com/br/free-tools/dev-cpp
-
VisualG Programa que armazena valores em uma pilha
devair1010 respondeu ao tópico de Lorenzo Nunez em Programação - iniciantes
@Lorenzo Nunez notei que você não colocou o comando para retornar um valor qualquer , e assim é , sem o "rotorne" não retorna nada . e fica lá na função . Funcao vazia: logico /// creio que variavel com mesmo nome Var /// da funcao dara interferencia vazilha: logico Inicio se (topo = 0) então vazilha <- verdadeiro senao vazilha <- falso fimse retorne vazilha Fimfuncao -
@CarlosChZ você quer executar esse programa na IDE DevC++ ? , ou no CMD com linha de comando , ou usando o explorer para localizar e clicar nele para executar ? , pois aqui no DevC++ Embarcadero está funcionando bem , ,.,
-
@CarlosChZ poste seu código , para testar e saber o que está errado .
-
C++ Atividade do curso sobre algoritmos
devair1010 respondeu ao tópico de junglerfullclear em C/C#/C++
@junglerfullclear algumas coisas , * não use acentuações , * pular linhas em branco não ajuda em nada , * não precisa das chaves { } , nos case's do switch , * a função checker , pode ser reduzida e ter menos linhas , * pediu para digitar de novo , no case 1 , mas sem nenhum comando para isso, #include <iostream> using namespace std; int cls(); // classe para nodo da pilha class nodoPilha { public: string data; nodoPilha *proximo; }; nodoPilha *novoNodo(string data) { nodoPilha *nodo = new nodoPilha(); nodo->data = data; nodo->proximo = NULL; return nodo; } int isEmpty(nodoPilha *base) { return ! base; } void push( nodoPilha **base , string novoItem ) { nodoPilha *nodo = novoNodo( novoItem ); nodo->proximo = *base; *base = nodo; } string pop( nodoPilha **base ) { if ( isEmpty( *base ) ) return NULL; nodoPilha *temp = *base; *base = ( *base )->proximo; string popped = temp->data; free( temp ); return popped; } string peek( nodoPilha *base ) { if ( isEmpty( base ) ) return NULL; return base->data; } int imprimePilha( nodoPilha* base ) { if ( isEmpty( base ) ) { return -1; } else { cout << "Os itens da pilha são: "<<endl ; while ( base != NULL ) { cout<< base->data << endl; base = base->proximo; } } cout << endl; return 0; } void esvaziaPilha( nodoPilha** base ) { while( ! isEmpty( *base ) ) { nodoPilha* temp = *base; *base = ( *base )->proximo; free( temp ); } cout << "A pilha foi esvaziada :/" << endl; } bool checker( string a ) { char url[] = "http"; for ( int i = 0; i < 4; i++ ) { if ( a[i] != url[i] ) { return false; } } return true; } int main() { int selec = 0 ; int NError = 0 ; string value = "" ; int remove = 0 ; int flg = 1 ; nodoPilha *base = NULL; while ( selec != 5 ) { cout << " --------------------------------------------" << endl << " SELECIONE A OPCAO DESEJADA : " << endl << " digite 1 para ADICIONAR uma URL ao registro " << endl << " digite 2 para REMOVER o Ultimo registro " << endl << " digite 3 para IMPRIMIR todas as URLs salvas " << endl << " digite 4 para EXCLUIR vArias URLs registradas (defina a quantidade) " << endl << " digite 5 para FINALIZAR o programa . " << endl << " --------------------------------------------" << endl << " ESCOLHA UMA OPCAO "; cin >> selec; cls(); switch ( selec ) { case 1: do { cout << "digite uma URL a ser adicionada "; cin >> value; cout << "------------------------" << endl; if ( checker( value ) == true ) { cout << "url adicionada!" << endl; push( & base, value ); NError++; flg = 0; } else { cout << "insira uma url vAlida " << endl; } } while( flg ); /// vai repetir até que esteja certo break; case 2: if ( NError > 0 ) { cout << "Removendo item do topo da pilha" << endl; pop( & base ); } else { cout << "não ha nada para remover" << endl; } break; case 3: if ( NError > 0 ) { if ( ! isEmpty( base ) ) { imprimePilha( base ); } } else { cout << "pilha vazia" << endl; } break; case 4: cout << "Quantas urls serao removidas: " << endl; cin >> remove; if ( remove > NError ) { esvaziaPilha(&base); NError = 0; } else { for (int i = 0; i < remove; i++) { NError--; pop( & base ); } cout << "removido" << endl; } break; case 5: { } break; default: cout << "insira valor válido" << endl; } } } int cls() { for(int f=0; f<10; f++)printf("\n"); return 0; } -
@valdir taveiros ele está sobrescrevendo o que foi gravado anteriormente por que na função fopen está com a letra "W" , e assim ele cria e reseta o arquivo para começar a gravar desde o início dele , e para não sobrescrever então use a letra "a" , que vai verificar se o arquivo já existe , ele abre o arquivo para gravar a partir do final dele , ou se não existir , cria o arquivo para gravar no inicio dele .
-
C Contar os caracteres em uma matriz de strings
devair1010 respondeu ao tópico de Igor Rossoni em C/C#/C++
@Igor Rossoni voê pode usar dois Loop's para verificar todas as posições da matriz e a cada letra A maiúscula , cujo código ASCII é 65 , encontrar incremente o contador dessa letra "A" , igualmente para a letra C , apenas que essa se encotrará na segunda linha da matreiz , que começa em zero , e então é a linha 1 da matriz . -
@IgorS10 você está inserindo os números Que com certeza são os múltiplos na matriz , e assim não tem necessidade de testar para saber se são múltiplos desses números ou não , mas mesmo assim se Quiser testa los ou se inserir outros números e testar também , pode usar o operador MOD que na linguagem C é esse símbolo "%" , e pode fazer com apenas um loop , que seria assim : /// Deve ter moltiplos do 5 na diagonal principal, moltiplos do 11 acima da /// diagonal principal e moltiplos do 13 abaixo da diagonal principal. /// Deve verificar primeiro se o nomero ie moltiplo do 5, se non se ie moltiplo /// do 11, se non se ie moltiplo do 13, se non for tambim deveria aparecer a /// mensagem "nomero invelido". /// Quando a matriz com a diagonal principal com os moltiplos do 5 tiver /// completa, deveria aparecer a mensagem "diagonal principal preenchida". /// Quando a matriz acima da diagonal principal com os moltiplos do 11 /// tiver completa, deveria aparecer a mensagem "non existe espaCio acima /// da diagonal principal". /// Quando a matriz abaixo da diagonal principal com os moltiplos do /// 13 tiver completa, deveria aparecer a mensagem "non existe espaCio /// abaixo da diagonal principal". /// Quando a matriz tiver completamente preenchida, deveria mostrar todos /// os elementos da matriz junto com suas posiCiones. #include <stdio.h> #include <stdlib.h> int main() { int i = 5; int j = 5; int v_i = i; int num = 0; int diag_p = 0; char ax[] = {" "}; int acima_diag_p = 0; int abaixo_diag_p = 0; /// int m[i][j]; printf("\n\tQuer EscoLher o TAM da Matriz Quadrada S/N "); fgets(ax , 4 , stdin); if(ax[0] != 's' && ax[0] != 'S') /// operador AND { printf("\n entonces a Matriz seraar de 5x5 mesmo . . . !\n\n"); } /// em outro idioma p enganar o corretor ortografico else { printf (" Quantas Linhas oU coLunas ? " ); fgets ( ax , 4 , stdin ); v_i = atoi( ax ); i = v_i ; j = v_i ; } printf("\n"); int** m = (int**) malloc ( i * sizeof(int) ); /// reserva espaCo para as Linhas da Matriz for( i = 0; i<v_i; i++ ) { m[i] = (int*) malloc ( j * sizeof(int) ); /// reserva espaCio para as Colunas da Matriz for( j=0; j<v_i; j++ ) { m[i][j] = 11 * (i + 1); /// insere com certeza mUltiplos de 11 if(i == j) /// posiCiones com moltiplos de 5 { m[i][j] = 5 * (i + 1); /// insere com certeza moltiplos de 5 if(m[i][j] % 5 == 0) /// eh divisavel por cinco e non sobra resto /// entonces eh moltiplo de cinco /// primeiro verifica todas as posiciones da matriz diag_p++; /// conta qtd na diag_pr } else { if( i < j ) /// posiCiones com moltiplos de 11 { if( m[i][j] % 11 == 0 ) /// e non sobra resto { acima_diag_p++; /// conta qtd acima_diag_pr } } else { if( i > j ) /// posiCiones com moLtiplos de 13 { m[i][j] = 13 * (i + 1); /// insere com certeza moltiplos de 13 if( m[i][j] % 13 == 0 ) /// e non sobra resto { abaixo_diag_p++; /// conta qtd abaixo_diag_pr } else printf(" nomero invelido . . . . !\n"); } /// em outro idioma p enganar o corretor ortografico } } printf("%4d",m[i][j]); } printf("\n"); } printf("\n Aqui apenas para obServar o valor das variables .\n\n" ); printf(" QTD dE moltiplos de 13 abaiXo_d_p -= %3d \n" , abaixo_diag_p ); printf(" QTD dE moltiplos de 11 aCimA_d_p -= %3d \n" , acima_diag_p ); printf(" QTD dE oUltiplos de 5 na d_p -= %3d\n\n" , diag_p ); printf(" Mostrar o Resultado final . \n\n" ); if( diag_p == v_i ) printf(" DiagonaL PrinciPal PreenChida . . . !\n"); if( acima_diag_p == ( v_i * v_i - v_i ) / 2 ) printf(" non existe espaCio acima da diagonal principal . . . !\n"); if( abaixo_diag_p == ( v_i * v_i - v_i ) / 2 ) printf(" non existe espaCio abaixo da diagonal principal . . . !\n"); return 0; /// em outro idioma p enganar o corretor ortografico }
-
@IgorS10 você insere números em um vetor / matriz usando o sinal de igualdade "=" , e os números você pode pegar do usuário através do teclado , usando scanf , ou gerar aleatório com a função rand() , e para saber essas opções citadas no enunciado você com certeza irá precisar usar o comando if para fazer as comparações que decidem se aquelas opções foram satisfeitas . faça seu código e poste aqui e ajudaremos se precisar .
-
@ningumx você está enviando a struct Aluno , para a função , mas nem precisa pois ela é Global , e sua função que faz o cadastro tem três loop's , e seria melhor usar um contador para determinar a posição de cada cadastro na struct , e assim não precisa verificar se aquela posição já contém algum cadastro ou não , pois incrementando o valor do contador mudará a posição do próximo cadastro , e seguindo o modo do seu código , seria assim : #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct aluno { int id_aluno ; char nm_aluno[20]; int delete ; int ativo ; int qtd ; } Aluno ; Aluno alunos[10]; /// Maximo 10 Alunos int i, posicao,cod; /// variAveis Globais //FUNÇÃO MENU PRINCIPAL int menu (); //Funções ALUNO int aluno (); int cadastro_aluno(); int consulta_id (); int exclui_id (); int altera_id (); int relatorio (); //Funções NOTA int notas (); int inclui_nota (); int altera_nota (); int exclui_nota (); int consulta_nota (); int main() { int opcao1 = 0; alunos[0].qtd = 0; do { opcao1 = menu(); switch (opcao1) { case 1: cadastro_aluno(); break; case 2: /// notas(); break; case 3: relatorio(); break; case 4: printf("\n\t\t\t\tVolte sempre.\n\n"); return 0; break; default: printf("\n\t\t\t\t\tEscreva um número válido.\n\n"); } system("pause"); } while( opcao1 != 4 ); return 0; } //-------------FUNÇÕES MENU-------------- int menu() { char a[10] = { " " }; l1: printf("\t\t\t\t =====MENU===== \n\n\n" "\t\t\t\t 1. Cadastrar Aluno \n" "\t\t\t\t 2. Notas \n" "\t\t\t\t 3. Relatório \n" "\t\t\t\t 4. Sair \n" "\t\t\t\t _____________________\n" "\t\t\t\t >>> " ); fflush( stdin ); fgets( a, 9, stdin ); system( "cls" ); int opcao1 = atoi( a ); if( opcao1 < 1 || opcao1 > 4 ) { printf("Digitou %d\n OpCAo invAlida . . . !\n",opcao1 ); goto l1 ; } return opcao1 ; } int cadastro_aluno() { char aux[10] = {0}; int cont = alunos[0].qtd; /// contador de cadastros if( cont > 9 ) /// Maximo 10 Alunos { printf("o vetor da struct esta Cheio . . . !\n"); return 0; } printf("\t\t\t\t=======Cadastro do Aluno=======\n\n\n"); printf( "Cógido do %d aluno --------: " , cont + 1 ); alunos[ cont].id_aluno = atoi(fgets(aux, 9, stdin ) ); printf( "Digite o nome do %d aluno -: ", cont + 1 ); fgets ( alunos[cont].nm_aluno ,19, stdin ); /// fgets pega todos caracteres na linha e + o newLine "enter" alunos[cont].nm_aluno[strlen(alunos[cont].nm_aluno)-1] = 0; /// remove newLine pego por fgets cont ++ ; alunos[0].qtd = cont ; return 0 ; } int consulta_id() { int cod = 0; system("cls"); printf(" \n Digite um código: "); scanf("%d", &cod); for(int i = 0 ; i < 10 ; i++) { if( cod == alunos[i].id_aluno ) { printf("\n Registro encontrado! "); posicao = i; } else { posicao = -1; } } return 0; } int aluno() { return 0; } int notas() { return 0; } int relatorio() { printf("\tListanDo Alunos Cadastrados\n"); for(int i=0; i< alunos[0].qtd; i++ ) printf("Nome ---: %s \n" "Codigo -: %d\n\n" , alunos[i].nm_aluno , alunos[i].id_aluno); return 0; }
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