Pesquisar na Comunidade
Mostrando resultados para as tags ''c++''.
Encontrado 58 registros
-
Estou com problema nesse código, na verdade é uma duvida de como trabalhar melhor com string. Eu quero faze um programa e nele quero receber do usuario, o sexo, caso o usuario digite um nome no local do sexo e seja diferente de Masculino, Feminino... de mensagem de erro. #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { char nome [25], sexo; printf("Digite o nome \n"); scanf("%[\n]", &nome); printf("Digite o Sexo:\n Para feminino digite: F \n\n Para masculino digite; M \n"); scanf("%c",&sexo); if (sexo != 'f'|| 'F' || 'M' || 'm') printf("Sexo Invalido"); ... return 0; }
-
Então, preciso fazer um programa em c++ que duplique o valor do vetor se ele for um numero par, até ai tudo bem, e preciso trocar a ordem desse vetor ate a penultima posição, desde a primeira, isso que tá garrando aqui, se alguem puder dar uma olhada no meu codigo. #include <iostream> using namespace std; #define n 10 int main() { int a[n], temp; for (int i = 0; i<n; i++) { cin >> a[i]; } for (int i = 0; i<n; i++) { if (a[i] % 2 ==0) a[i]=a[i]*2; } for (int i = 0; i<n-1; i++) { temp=a[i]; a[i]=a[i+1]; temp=a[i]; a[i]=temp; } for (int i = 0; i<n; i++) { cout << a[i] << " " ; } return 0; }
-
Duvida 2 execicios escrever de 0 a 99 por extenso ao digitar um valor
BrunoPro postou um tópico no fórum C/C++
Boas galera. Estou em formação de iniciação a C++ de 50h, e completei 35h até agora, meu professor passou 50 exercícios para fim de semana, e estou com problema em 2 deles. Este nem entendi : O resultado da divisão inteira de um número inteiro por outro número inteiro pode sempre ser obtido utilizando-se apenas o operador de subtração. Assim, se quisermos calcular (7/2), basta subtrair o dividendo (2) ao divisor (7), sucessivamente, até que o resultado seja menor do que o dividendo. O número de subtrações realizadas corresponde ao quociente inteiro, conforme o exemplo seguinte: 7 - 2 = 5 5 - 2 = 3 3 - 2 = 1 Descreva um programa para o cálculo da divisão de um inteiro pelo outro. Note que se o dividendo for zero, esta é uma operação matematicamente indefinida. E o segundo exercicio é o seguinte escrever de 0 a 99 por extenso o numero, alguém me dá uma ajuda? #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <iostream> #include <locale> using namespace std; int main() { setlocale(LC_ALL, "Portuguese"); system ("color 1B"); int n,a,b,c; cout << "Insira um número de 0 a 99 e o retorno seja o número por extenso\n"; cout << "Insira o número : "; cin >> n; { switch (a) { case 0 : cout << "zero"; break; case 1 : cout <<"um"; break; case 2 : cout <<"dois"; break; case 3 : cout <<"tres"; break; case 4 : cout <<"quatro"; break; case 5 : cout <<"cinco"; break; case 6 : cout <<"seis"; break; case 7 : cout <<"sete"; break; case 8 : cout <<"oito"; break; case 9 : cout <<"nove"; break; } switch (b) { case 0 : cout <<"dez"; break; case 1 : cout <<"onze"; break; case 2 : cout <<"doze"; break; case 3 : cout <<"treze"; break; case 4 : cout <<"catorze"; break; case 5 : cout <<"quinze"; break; case 6 : cout <<"dezesseis"; break; case 7 : cout <<"dezassete"; break; case 8 : cout <<"dezoito"; break; case 9 : cout <<"dezanove"; break; } switch (c) { case 2 : cout <<"vinte"; break; case 3 : cout <<"trinta"; break; case 4 : cout <<"quarenta"; break; case 5 : cout <<"cinquenta"; break; case 6 : cout <<"sessenta"; break; case 7 : cout <<"setenta"; break; case 8 : cout <<"oitenta"; break; case 9 : cout <<"noventa"; break; } } { if (n >=20 && n<100) cout << c << a; } { if ( n>10 && n<20) cout <<b; } { if (n<=10) cout <<a << c; } return 0; } -
Bom dia Pessoal, estou tendo problemas para mostrar na tela dados do telefone em um código para cadastro de clientes, alguém pode me ajudar? aqui como eu coletei os dados: aqui como estou tentando mostrar na tela:o que fiz de errado?
-
Meu professor passou uma prova pra casa para entregar na sexta feira e eu ainda não tive tempo de fazer nada e ainda tenho mais outra prova no mesmo dia. E definitivamente icc não tá como prioridade. Alguém pode pelo amooor me ajudar? porque assim, máximo respeito pelos programadores viu? É muita paciência que vocês tem! 1. Ele pede pra implementar um programa que tenha funções de soma, subtração, multiplicação e divisão que opere 2 números e retorne a sua respectiva operação. 2. Implementar uma função que receba a quantidade de faltas no trabalho e retorne o salario mensal de um funcionario, cuja diaria é 100,00 de acordo com o numero de dias trabalhados. Tem essa formula aqui: dias_trabalhados=30-falta_no_mes salario_mensal=dias_trabalhadosx100 3. Implantar um procedimento que receba 3 números e exiba-os em ordem crescente. Desde já muita gratidão por todos que tirarem um tempinho do tempo pra me salvar. Att.
-
Estou tentando fazer um programa para cadastro de clientes, para o aprendizado apenas, estou com um erro que nao consigo resolver, cadastro algumas pessoas mas na hora de fazer a pesquisa desses cadastros eu coloco o cpf de uma e aparece as informacoes da proxima pessoa na fila de arrays. E quando tento pesquisar alguma pessoa que nao esteja no array 0 cai no else CPF INVALIDO, Ai vai o codigo: #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> char nome[50] [50]; char email[50] [50]; int cpf[50]; int op; int i = 0; int a; int cpfpesquisa; char emailpesquisa[50]; using namespace std; void pesquisa (); void cadastro(); int main() { do{ cadastro(); pesquisa(); }while(op == 2); system ("PAUSE"); return 0; } void cadastro() { do{cout << "-----CADASTRO-----" << endl << endl; cout << "NOME: " ; cin >> nome; cout << endl <<"EMAIL: "; cin >> email; cout << endl << "CPF: "; cin >> cpf; cout << endl << "PARA CONTINUAR CADASTRANDO DIGITE 1"; cin >> op; i++; }while(op == 1); } void pesquisa () { do{ cout << "DIGITE 1 PARA PESQUISAR POR CPF E 2 PRA PESQUISAR POR EMAIL "; cin >> op; switch(op) { case 1: cout << "DIGITE O CPF: "; cin >> cpfpesquisa; for(a=0;a<50;a++) { if(cpfpesquisa == cpf[a]) {cout << "NOME: " << nome[a] << endl << "EMAIL: " << email[a] << endl; break;} else{ cout << "CPF INVALIDO!"; }break;}break; case 2: cout << "DIGITE O EMAIL: "; cin >> emailpesquisa; for(a=0;a<50;a++){ if (strcmp( emailpesquisa,email[a])) { cout << "NOME: " << nome[a] << endl << "CPF: " << cpf[a] << endl; break;} } } cout << endl << "PARA CONTINUAR A PESQUISAR DIGITE 1" << endl << "PARA VOLTAR A CADASTRAR DIGITE 2 "; cin >> op; }while (op ==1); }
-
Construir um algoritmo em C++ que preencha um matriz quadrada de tamanho 4
christin cley postou uma questão Perguntas e respostas rápidas
Construir um algoritmo em C++ que preencha um matriz quadrada de tamanho 4 pelo usuário. Após o preenchimento pelo usuário, verifique na diagonal principal qual foi o maior valor digitado e exiba na tela o valor. Por fim, exiba na tela toda matriz em forma de matriz na tela. -
Faça um Programa em Linguagem C que receba o nome e a nota de 180 alunos de uma sala e armazene em vetor. Calcule e mostre: - A média da sala; - O nome do aluno com a maior nota; - O nome do aluno com a menor nota; - Os nomes dos alunos aprovados; O meu código é esse : #define N 180 int main() { int i, ind_maior, ind_menor; float nota[N], soma=0, media, min_aprov=7; char nome[N][50]; for (i=0; i printf("Informe o nome do %dº aluno: ", i+1); gets(nome); printf("Informe a nota do %dº aluno: ", i+1); scanf(" %d ", ¬a); soma += nota; } media = soma / N; printf("\nMédia da sal: %.2f\n", media); ind_menor = ind_maior = 0; for (i=1; i if (nota < nota[ind_menor]) ind_menor = i; if (nota > nota[ind_maior]) ind_maior = i; } printf("Menor nota: %s com %.2f\n", nome[ind_menor], nota[ind_menor]); printf("Maior nota: %s com %.2f\n", nome[ind_maior], nota[ind_maior]); printf("Aprovados:"); for (i=0; i if (nota >= min_aprov) printf("\t%s com: %.2f\n", nome, nota); } return 0; } Porém quando vou executa-lo, o programa pede para inserir o nome e nota do aluno apenas uma vez, e fica por isso, ele não exibe os resultados, alguém pode me ajudar ?
-
Pessoal,estou fazendo uma serie de exercícios em c++ e to me batendo muito em um exercício aqui,poderiam me ajudar? Construir um algoritmo em C++ que preencha um matriz quadrada de tamanho 4 pelo usuário. Após o preenchimento pelo usuário, verifique na diagonal principal qual foi o maior valor digitado e exiba na tela o valor. Por fim, exiba na tela toda matriz em forma de matriz na tela.
-
[C++] Ao compilar o programa ele não faz nada e simplesmente fecha
matheusxds12 postou um tópico no fórum C/C++
Gostaria de saber qual o problema com o meu código pois ao compilar e executar ele simplesmente abre o DOS e fecha sem realizar nenhuma tarefa #include <stdlib.h> #include <stdio.h> #include <locale.h> // aux1 = contador de coluna e aux2 = contador de linha int main () { setlocale(LC_ALL, "portuguese"); int m1, n1, m2, n2, matriz1[m1][n1], matriz2[m2][n2],matrizsoma[m1][n1],aux1,aux2,elemento,contadorlinha=0; printf("Entre com o número de linhas da 1ª matriz : "); scanf("%i",&m1); printf("Entre com o número de colunas da 1ª matriz : "); scanf("%i",&n1); printf("Entre com o número de linhas da 2ª matriz : "); scanf("%i",&m2); printf("Entre com o número de colunas da 2ª matriz : "); scanf("%i",&n2); if ((m1==m2) && (n1==n2)){ for (aux2 = 0;aux2<m1;aux2++){ for (aux1=0;aux1<n1;aux1++){ contadorlinha=aux1+1; printf("Matriz A:"); printf("Entre com os elementos um a um, separados por espaço da %iª linha: ",contadorlinha); scanf("%i",&elemento); matriz1[aux2][aux1]=elemento; } } for (aux2 = 0;aux2<m2;aux2++){ for (aux1=0;aux1<n2;aux1++){ contadorlinha=aux1+1; printf("Matriz B:"); printf("Entre com os elementos um a um, separados por espaço, da %iª linha: ",contadorlinha); scanf("%i",&elemento); matriz2[aux2][aux1]=elemento; } } for (aux2=0;aux2<m1;aux2++){ for(aux1=0;aux1<n1;aux1++){ matrizsoma[aux2][aux1]=matriz1[aux2][aux1]+matriz2[aux2][aux1]; } } printf("Matriz C = A + B:\n"); for (aux2=0;aux2<m1;aux2++){ for(aux1=0;aux1<n1;aux1++){ printf("%i",matrizsoma[aux2][aux1]); } printf("\n"); } } else{ printf("\nParâmetros das matrizes inválidos para a soma!\n"); printf("Ambas devem ter o mesmo número de linhas e colunas\n"); } system("pause"); return 0; } -
Olá, estou tentando fazer um programa para o problema do caixeiro comprador exato (TPP ou PCCo) e, depois de fazer algumas pesquisas, eu encontrei o código a baixo e gostaria conseguir compilar e executar para comparar com a minha implementação. O problema é que não consigo compilar o código. Fica dando, esses erros(Também segue na foto): " /tmp/ccvk9cDb.o: Na função "work()": main.cpp:(.text+0x104e): relocação truncada para caber: R_X86_64_PC32 contra símbolo não definido "pop" na seção .bss em /tmp/ccvk9cDb.o main.cpp:(.text+0x106e): relocação truncada para caber: R_X86_64_PC32 contra símbolo não definido "pop" na seção .bss em /tmp/ccvk9cDb.o main.cpp:(.text+0x1152): relocação truncada para caber: R_X86_64_PC32 contra símbolo não definido "pop" na seção .bss em /tmp/ccvk9cDb.o main.cpp:(.text+0x12b4): relocação truncada para caber: R_X86_64_PC32 contra símbolo não definido "pop" na seção .bss em /tmp/ccvk9cDb.o /tmp/ccvk9cDb.o: Na função "__static_initialization_and_destruction_0(int, int)": main.cpp:(.text+0x1526): relocação truncada para caber: R_X86_64_PC32 contra ".bss" main.cpp:(.text+0x1539): relocação truncada para caber: R_X86_64_PC32 contra ".bss" collect2: error: ld returned 1 exit status " Esse é o código: ////////////////////////////////////////////////////////////////////////////////////////////// #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #include <queue> #include <map> #include <set> #include <vector> #include <string> #include <stack> #include <bitset> #include"instance_access.h" #define INF 0x3f3f3f3f #define eps 1e-8 #define FI first #define SE second using namespace std; typedef long long ll; const int MaxM = 25, MaxK = 700; int M, K, Q; int G[MaxM + 5][MaxM + 5]; int P[MaxM + 5][MaxK + 5]; int C[MaxM + 5]; void read(char *p,int m,int k,int d,int h) { //scanf("%d%d", &M, &K); int* _graph; int* _price; //_graph->printMatrix(); //cout<<endl; //_price->printMatrix(); //cout<<endl; get_instance_largek(_graph,_price,m,k,p); //cout<<endl; for(int i=0;i<m;++i) { for(int j=0;j<m;++j) { int temp=_graph[i*m+j]; //cout<<temp<<" "; *(G + j)=temp; } //cout<<endl; } //cout<<endl; for(int i=0;i<m;++i) { for(int j=0;j<k;++j) { int temp=_price[i*k+j]; // cout<<temp<<" "; *(P + j)=temp; } // cout<<endl; } M=m; K=k; Q=h; for(int i=1;i<m;++i) { C=d; } } inline void ck(int &x, int v) { if(x > v) x = v; } int head[MaxM + MaxK + 10]; struct Edge { int nxt, to, cow, cost; Edge() {} Edge(int nxt, int to, int cow, int cost) : nxt(nxt), to(to), cow(cow), cost(cost) {} } ed[100000]; int ecnt, mx_flow, mi_cost; void init() { mx_flow = mi_cost = ecnt = 0; memset(head, -1, sizeof(head)); } void addedge(int u, int v, int cow, int cost) { ed[ecnt] = Edge(head, v, cow, cost); head = ecnt ++; ed[ecnt] = Edge(head[v], u, 0, -cost); head[v] = ecnt ++; } queue <int> q; int dis[MaxK + MaxM + 10], pre[MaxK + MaxM + 10], inq[MaxK + MaxM + 10]; bool Spfa(int S, int T) { memset(dis, 0x3f, sizeof(dis)); dis = 0; q.push(S); while(!q.empty()) { int u = q.front(); q.pop(); inq = 0; for(int e = head; ~e; e = ed[e].nxt) { if(!ed[e].cow) continue; int v = ed[e].to; if(dis[v] > dis + ed[e].cost) { dis[v] = dis + ed[e].cost; pre[v] = e; if(!inq[v]) { inq[v] = 1; q.push(v); } } } } return dis[T] != INF; } void End(int S, int T) { int flow = INF; for(int u = T; u != S; u = ed[pre ^ 1].to) { flow = min(flow, ed[pre].cow); } for(int u = T; u != S; u = ed[pre ^ 1].to) { ed[pre].cow -= flow; ed[pre ^ 1].cow += flow; mi_cost += flow * ed[pre].cost; } mx_flow += flow; } int minPrice(int s) { init(); int src = 0, dec = M + K+1; for(int i = 1; i < M; ++ i) { if(~s >> i & 1) continue; addedge(src, i, C, 0); for(int k = 0; k < K; ++ k) { if(P[k] == 0) continue; addedge(i, M + k+1, 1, P[k]); } } for(int i = 1; i <= K; ++ i) { addedge(M + i, dec, 1, 0); } while(Spfa(src, dec)) End(src, dec); if(mx_flow != K) return -1; return mi_cost; } int dp[MaxM + 1][1 << MaxM]; int pop[1 << MaxM]; void work() { int U = 1 << M; for(int i = 1; i < U; ++ i) { pop = pop[i >> 1] + (i & 1); } for(int i = 1; i < M; ++ i) { for(int j = 0; j < U; ++ j) { dp[j] = INF; } } for(int i = 1; i < M; ++ i) { dp[1 << i] = G[0]; } for(int s = 1; s < U; ++ s) { if(pop >= Q) continue; for(int i = 1; i < M; ++ i) { if(dp == INF) continue; for(int j = 1; j < M; ++ j) { if(s >> j & 1) continue; ck(dp[j][s | (1 << j)], dp + G[j]); } } } int ans = INF; for(int i = 0; i < U; ++ i) { if(pop > Q) continue; int f = minPrice(i); if(f == -1) continue; for(int j = 1; j < M; ++ j) { if(dp[j] == INF) continue; ck(ans, f + dp[j] + G[j][0]); } } printf("%d", ans); } int main(int argc,char *argv[]) { //arguments order: filename m k u q if(argc !=6) { cout<<"wrong number of arguments"; return 1; } int m,k,u,q; m=atoi(argv[2]); k=atoi(argv[3]); u=atoi(argv[4]); q=atoi(argv[5]); read(argv[1],m,k,u,q); time_t begin,end; cout<<"optimal object value: "; begin=clock(); work(); end=clock(); cout<<endl; cout<<"time: "; cout<<double(end-begin)/CLOCKS_PER_SEC<<endl; return 0; } ////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////"instance_acess.h"////////////////////////////////////////////////////////// #ifndef INSTANCE_ACCESS_H_INCLUDED #define INSTANCE_ACCESS_H_INCLUDED #include <string> #include <strstream> #include<iostream> #include<fstream> #include<string.h> using namespace std; int get_instance_largek(int *&graph, int *&product_distribution, int m,int k,char *p) { graph=new int[m*m]; product_distribution=new int[m*k]; for(int i=0;i<m;++i) { for(int j=0;j<m;++j) { graph[i*m+j]=0; } } for(int i=0;i<m;++i) { for(int j=0;j<k;++j) { product_distribution[i*k+j]=0; } } ifstream fin; fin.open(p); if(fin.is_open()) { string s; while(fin>>s) { if(s=="NODE_COORD_SECTION") { fin>>s; int num; double x[m]; double y[m]; for(int i=0;i<m;++i) { fin>>num; fin>>x; fin>>y; } for(int i=0;i<m;i++) { for(int j=0;j<m;j++) { double xd=x-x[j]; double yd=y-y[j]; int d=(int)(sqrt(xd*xd+yd*yd)+0.5); graph[i*m+j]=d; } } } if(s=="OFFER_SECTION") { fin>>s; int id; int num=0; for(int i=0;i<m;++i) { fin>>id; fin>>num; int product_id; int cost; int dem; for(int j=0;j<num;++j) { fin>>product_id; fin>>cost; product_distribution[i*k+product_id-1]=cost; fin>>dem; } } } } return 1; }else{ return 0; } } #endif // INSTANCE_ACCESS_H_INCLUDED //////////////////////////////////////////////////////////////////////////////////////////////
-
Faça um programa leia dois números inteiros e utilize uma função SOMAR que receba esses dois números por parâmetro e retorne a soma dos números inteiros existentes entre eles. Sou iniciante em programação e tentei fazer o programa da tal forma: #include<stdlib.h> #include<math.h> #include<stdio.h> int SOMAR((((int soma;i;n1;n2)))) { return; for (i=n1+1; i<n2; i++) { soma += i; } } int main() { int n1, n2; printf("Informe os números: "); scanf("%d %d", &n1, &n2); printf("\nSoma: %d\n", SOMAR(soma)); return 0; system ("pause"); } Não roda por vários motivos e sinceramente sei nem como resolver
- 1 resposta
-
armazenar uma palavra em uma lista encadeada
alexkbw postou um tópico no fórum Docker, Kubernets e outros ambientes
ola, preciso de ajuda estou aprendendo C++ e nao consigo criar uma lista encadeada que armazene palavras segue o codigo: // listaEncadeada.cpp : Este arquivo contém a função 'main'. A execução do programa começa e termina ali. #include "pch.h" #include "conio.h" #include "string" #include<iostream> using namespace std; struct lista { char c; int n; struct lista*p; }; struct lista * inserirn(char,int); struct lista * prim; void inserir() { char c; int n; printf("\ninforme uma cor :"); scanf_s("%s", &c); printf("\ninforme um numero:"); scanf_s("%d", &n); inserirn(c,n); } struct lista * inserirn(char c,int n) { struct lista *novo, *aux; novo = (struct lista*)malloc(sizeof(struct lista)); if (novo!=NULL)//caso nao aja memoria { novo->n= n; novo->c = c; novo->p = NULL; if (prim==NULL) { prim = novo; } else { aux = prim; while (aux->p != NULL) { aux = aux->p; } aux->p = novo; } } return novo; } int main() { prim = NULL; inserir(); inserir(); inserir(); _getch(); }-
- lista encadeada
- c++
-
(e mais 1 )
Tags:
-
/* Desenvolver um programa para realizar a correção de um prova de múltipla escolha. Os dados iniciais a serem lidos são: - A quantidade de candidatos (N) e - A quantidade de questões aplicadas (M). As respostas possíveis que poderão ser aceitas são: A, B, C, D e E. O primeiro conjunto de dados a ser lido será o gabarito com as respostas corretas das M questões. Após o gabarito, serão lidos os nomes as respostas de cada candidato. Os valores das questões são iguais. A nota máxima é 10 e a de classificação é 5. As estruturas que deverão ser utilizadas são: O programa deverá: a) Gerar o vetor NOTA; b) Apresentar o relatório geral contendo o nome do candidato e sua nota; c) Calcular e apresentar a média geral dos candidatos; d) Apresentar a quantidade e o percentual de classificados e desclassificados; e) Apresentar o relatório de candidatos classificados; f) Apresentar a melhor nota obtida e seu(s) respectivo(s) candidato(s); g) Gerar o vetor ACERTOS com o percentual correspondente e apresentá-lo. */ #include <iostream> using namespace std; // torna desnecessária o uso do comando standard (std) antes das variáveis main() { setlocale(LC_ALL,"Portuguese"); int M[2][2],l, c, nota=0, soma=0, media=0, i=0, j=0; string nome[j]; cout<<"Digite seu nome"<<endl; cin>>nome[j]; for(l=0;l<2;l++) { for (c=0;c<2;c++) { cout<<"["<<l<<"]["<<c<<"] : "; cin>>M[l][c]; } } for (l=0;l<2;l++) { for (c=0;c<2;c++) { cout<<M[l][c]<<" "; } cout<<endl; } cout<<"Matriz A "<<" Vetor B "<<endl; for (l=0;l<2;l++) { soma=0; for (c=0;c<2;c++) { cout<<M[l][c]<<" | "; soma=soma+M[l][c]; media=soma/3; } cout<<" = "<<media<<endl; } cout<<"Somatório da colunas: "<<endl; for (c=0;c<2;c++) { soma=0; for (l=0;l<2;l++) { soma=soma+M[l][c]; } cout<<soma<<endl; } cout<<"Somatório da Diagonal: "<<endl; for (l=0;l<2;l++) { soma=0; for (l=0;l<2;l++) { soma=soma+M[l][l]; } cout<<soma<<endl; } } A pergunta é, como imprimir os nomes na coluna 0 e linhas de 1 a 5 e como fazer para que as respostas possíveis que poderão ser aceitas sejam: A, B, C, D e E?
-
Seguinte, estou tentando criar um jogo da velha mas e está causando um erro ao compilar, aparece um erro dizendo->|error: cannot convert 'char (*)[3]' to 'char*' for argument '1' to 'bool verificaX(char*)', alguem sabe como posso resolver ???! (Aparentemente não ta dando pra armazenar o endereço do vetor casas dentro do ponteiro das funções... Obs: Aceito sugestões para melhorar meu código, grato.(Ignorem as bibliotecas inúteis) #include <iostream> #include <stdio.h> //Para função gets #include <stdlib.h> //Para função malloc #include <math.h> #include <iomanip> //JOGO DA VELHA using namespace std; int jogadas=0; bool verificaX(char *vetor); bool verificaO(char *vetor); int main(){ char casas[3][3]={' ',' ',' ',' ',' ',' ',' ',' ',' '}; int l=0,c=0; while(jogadas<9){ cout << "\t\t" << casas[0][0] << " | " << casas[0][1] << " | " << casas[0][2] << "\n"; cout << "\t\t_________\n"; cout << "\t\t" << casas[1][0] << " | " << casas[1][1] << " | " << casas[1][2] << "\n"; cout << "\t\t_________\n"; cout << "\t\t" << casas[2][0] << " | " << casas[2][1] << " | " << casas[2][2] << "\n\n\n"; cout << "Digite uma linha: "; cin >> l; cout << "Digite uma coluna: "; cin >> c; while(l<=0 || c <=0 || l>3 || c>3){ system("cls"); cout << "Linha ou Coluna não existe!"; cout << "Digite uma linha: "; cin >> l; cout << "Digite uma coluna: "; cin >> c; } system("cls"); if(jogadas%2==0){ casas[--l][--c]='X'; }else{ casas[--l][--c]='O'; } jogadas++; verificaX(casas); verificaO(casas); } if(verificaX){ cout << "Jogador X ganhou!"; }else if(verificaO){ cout << "Jogador O ganhou!"; }else{ cout << "Empate!"; } return(0); } bool verificaX(char *vetor){ int l,c; for(l=0;l<3;l++){ if(vetor[l][0] && vetor[l][1] && vetor[l][2] == 'X'){ jogadas=10; return true; }else if(vetor[0][c] && vetor[1][c] && vetor[2][c] == 'X'){ jogadas=10; return true; } c++; } return 0; } bool verificaO(char *vetor){ int l,c; for(l=0;l<3;l++){ if(*vetor[l][0]=='X' && *vetor[l][1]=='X' && *vetor[l][2] == 'X'){ jogadas=10; return o=true; }else if(*vetor[0][c]=='X' && *vetor[1][c]=='X' && *vetor[2][c] == 'X'){ jogadas=10; return o=true; } c++; } return 0; }
-
Como que eu faço pra imprimir todos os elmentos da lista abaixo #include <iostream> #include<locale.h> #include<stdlib.h> #include<stdio.h> #include <ctype.h> #include<string> #include<limits> #include <string> using namespace std; template <class tipo> class No { public: tipo info; No <tipo> *prox; No(tipo elem, tipo nome, tipo descricao, No <tipo> *p); }; template <class tipo> class Lista{ private: No <tipo> *inicio; public: Lista(); ~Lista(); void insert(tipo elem,tipo nome, tipo descricao); int remove(tipo elem,tipo nome, tipo descricao); int empty(); }; template <class tipo> No <tipo> :: No(tipo elem,tipo nome, tipo descricao, No <tipo> *p){ info=elem; info= nome; info=descricao; prox=p; } template <class tipo> Lista <tipo> :: Lista() {inicio=NULL;} template <class tipo> int Lista <tipo> :: empty(){ if(!inicio) return 1; else return 0; }; template <class tipo> void Lista <tipo> :: insert(tipo elem,tipo nome, tipo descricao){ No <tipo> *ant=NULL, *atual,*novo; novo = new No <tipo>(elem,nome,descricao, NULL); if(empty()) inicio=novo; else{ atual=inicio; while(atual!=NULL && atual->info <= elem){ ant=atual; atual=atual->prox; } if(ant==NULL){//inicio novo->prox=inicio; inicio=novo; } else{//meio ou fim ant->prox=novo; novo->prox=atual; } } } template <class tipo> Lista <tipo> :: ~Lista(){ No <tipo> *p; while(inicio!=NULL){ p=inicio; inicio=inicio->prox; delete p; } } int Menu() { int opcao,idEspecialidade; char op='2'; int retorno; string nomeEspecialidade, descricaoEspecialidade; setlocale(LC_ALL, "Portuguese"); cout<<"-----------------------------"<<endl; cout<<"- CLÍNICA MOREHEALTH -"<<endl; cout<<"-----------------------------"<<endl; cout<<"[1]-CADASTRAR ESPECIALIDADE"<<endl; cout<<"[2]-SOLICITAR CONSULTA"<<endl; cout<<"[3]-LISTAR CONSULTAS"<<endl; cout<<"[4]-SAIR"<<endl; cout<<"-------------------------------"<<endl; cout<<"INSIRA A OPÇÃO DESEJADA (1 A 4): "; cin>> opcao; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); do { switch(opcao) { case 1: { cout<<"Informe id Especialidade :"; cin>>idEspecialidade; cin.ignore(); cout<<"Informe Nome Especialidade: "; getline(cin,nomeEspecialidade); cout<<"Informe descrição Especialidade: "; getline(cin,descricaoEspecialidade); system("pause"); system("cls"); return Menu(); break; } case 2: { system("pause"); system("cls"); return Menu(); return Menu(); break; } case 3: { system("cls"); cout<<"nenhuma lista "<<"\n"; system("pause"); system("cls"); return Menu(); break; } case 4: { system("cls"); cout<<endl; cout<<":::::::::::::::::::::"<<endl; cout<<"*SISTEMA FINALIZADO*"<<endl; cout<<":::::::::::::::::::::"<<endl; exit(0); break; } } cout<<endl; cout<<"****opção inválida,tente novamente!***"<<endl; cout<<endl; cout<<"INSIRA A OPÇÃO DESEJADA (1 A 4): "; cin>> opcao; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); } while(opcao>0 || opcao<5); system("cls"); } //programa principal int main() { Menu( ); Lista <string> L; return 0; }
-
Não estou conseguindo entender esse programa em c , tem como me ajudar? Escreva um programa que armazene 40 elementos reais em um vetor. Mostrar o vetor e informar quantos números existem em cada faixa: Faixa 1 -> 1 - 100 Faixa 2 -> 200 - 450 Faixa 3 -> 501 - 745.5 Faixa 4 -> 800.5 - 920.9
-
Ao executar o meu .cpp ele tem feito tudo corretamente com todos os metodos, menos o radix, ele tem q calcular os tempos e fazer a media depois, ele não tem feito isso com o radix e não sei oq fazer, preciso muito de ajuda e uma solução, ja tentei de tudo, mas não sou bom em C++. link para ver funcionando: https://www.onlinegdb.com/fork/rkRmSLk24 #include <stdio.h> #include <time.h> #include <stdlib.h> #include <limits.h> #include <string.h> #include <chrono> #include <unistd.h> #include <iostream> using namespace std; int *v, *v1, *v2, *v3, *v4, *v5, *v6, *v7; //------------------------------------------------------------------------------------- void bubbleSort(int v[], int n) { bool trocou; int k = n; do { trocou = false; k--; for (int i = 0; i < k; i++) if (v[i+1] < v[i]) { int aux = v[i+1]; v[i+1] = v[i]; v[i] = aux; trocou = true; } } while (trocou); } //------------------------------------------------------------------------------------- void insertionSort(int v[], int n) { int i, j, chave; for (j = 1; j < n; j++) { chave = v[j]; i = j - 1; while (i >= 0 && v[i] > chave) { v[i+1] = v[i]; i--; } v[i+1] = chave; } } //------------------------------------------------------------------------------------- void selectionSort(int v[], int n) { int i, j, min; for(i = 0; i < n-1; i++) { min = i; for (j = i + 1; j < n; j++) if (v[j] < v[min]) min = j; if (min != i) { int temp = v[min]; v[min] = v[i]; v[i] = temp; } } } //------------------------------------------------------------------------------------- void shellSort(int v[], int n) { int i , j , valor; int h = 1; while(h < n) { h = 3*h+1; } while (h > 1) { h /= 3; for(i = h; i < n; i++) { valor = v[i]; j = i - h; while (j >= 0 && valor < v[j]) { v [j + h] = v[j]; j -= h; } v [j + h] = valor; } } } //------------------------------------------------------------------------------------- void quickSort1(int v[], int ini, int fim) { int i = ini; int j = fim; int pivo = v[(ini+ fim)/2]; // Pivo e o elemento central do { while (v[i] < pivo && i < fim) i++; while (pivo < v[j] && j > ini) j--; if (i <= j) { int aux = v[i]; v[i] = v[j]; v[j] = aux; i++; j--; } } while (i <= j); if (ini < j) quickSort1(v,ini,j); if (i < fim) quickSort1(v,i,fim); } void quickSort(int v[], int tam) { quickSort1(v, 0, tam-1); } //------------------------------------------------------------------------------------- void intercala(int v[], int aux[], int ini, int meio, int fim) { int i = ini, j = fim, k; for (k = ini; k <= meio; k++) aux[k] = v[k]; for (k = meio+1; k <= fim; k++) aux[fim + meio + 1 - k] = v[k]; for (k = ini; k <= fim; k++) if (aux[i] <= aux[j]) v[k] = aux[i++]; else v[k] = aux[j--]; } void mergeSort1(int v[], int aux[], int ini, int fim) { if (ini < fim) { int meio = (ini + fim) / 2; mergeSort1(v, aux, ini, meio); mergeSort1(v, aux, meio+1, fim); intercala(v, aux, ini, meio, fim); } } void mergeSort(int v[], int n) { int *aux = (int *) malloc(n * sizeof(int)); mergeSort1(v, aux, 0, n-1); free(aux); } //------------------------------------------------------------------------------------- int getMax(int v[], int tam) { int max = v[0]; for (int i = 1; i < tam; i++) if (v[i] > max) max = v[i]; return max; } void countSort(int v[], int tam, int exp) { int output[tam], i, count[10] = {0}; for (i = 0; i < tam; i++) count[(v[i] / exp) % 10]++; for (i = 1; i < 10; i++) count[i] += count[i-1]; for (i = tam - 1; i >= 0; i--) { output[count[(v[i] / exp) % 10] - 1] = v[i]; count[(v[i] / exp) % 10]--; } for (i = 0; i < tam; i++) v[i] = output[i]; } void radixsort(int v[], int tam) { int exp, m; m = getMax(v, tam); for (exp = 1; m/exp > 0; exp *= 10) countSort(v, tam, exp); } //------------------------------------------------------------------------------------- void gerar(int v[], int tam) { srand((unsigned int)time(NULL)); for (int i = 0; i < tam; i++) v[i] = rand() % 100000001; } //------------------------------------------------------------------------------------- void copiar(int origem[], int destino[], int n) { for (int i = 0; i < n; i++) destino[i] = origem[i]; } //------------------------------------------------------------------------------------- bool verifica(int v[], int n) { for (int i = 0; i < n-1; i++) if (v[i] > v[i+1]) return false; return true; } //------------------------------------------------------------------------------------- void inverte(int v[], int n) { for (int i = 0, j = n-1; i < n/2; i++,j--) v[i] = v[j]; } //------------------------------------------------------------------------------------- int main(void) { chrono::steady_clock::time_point start, end; long double cpu_time; int tam, iter; char metodos[100]; long double tempo[] = { 0, 0, 0, 0, 0, 0 }; tam = 0; printf("Quantos numeros? "); scanf("%d", &tam); getchar(); if (tam <= 0) return 0; printf("Selecione os metodos:\n 1-Bubble sort\n 2-Selection sort\n 3-Insertion sort\n 4-Shell sort\n 5-Quicksort\n 6-Mergesort\n 7-Radix sort\nMetodos: "); gets(metodos); printf("Quantas execucoes (1, 2, 3, ...)? "); scanf("%d", &iter); getchar(); if (iter <= 0) return 0; v = (int *) malloc(tam * sizeof(int)); v1 = (int *) malloc(tam * sizeof(int)); v2 = (int *) malloc(tam * sizeof(int)); v3 = (int *) malloc(tam * sizeof(int)); v4 = (int *) malloc(tam * sizeof(int)); v5 = (int *) malloc(tam * sizeof(int)); v6 = (int *) malloc(tam * sizeof(int)); v7 = (int *) malloc(tam * sizeof(int)); for (int i = 1; i <= iter; i++) { printf("------------------------------------------------\nExecucao %d:\n------------------------------------------------\n", i); printf("Gerando %d elementos...\n", tam); gerar(v, tam); copiar(v, v1, tam); copiar(v, v2, tam); copiar(v, v3, tam); copiar(v, v4, tam); copiar(v, v5, tam); copiar(v, v6, tam); copiar(v, v7, tam); // bubble if (strchr(metodos, '1') != NULL) { printf("Bubble sort...\n"); start = chrono::steady_clock::now(); bubbleSort(v1, tam); end = chrono::steady_clock::now(); cpu_time = chrono::duration_cast<chrono::nanoseconds>(end - start).count() / (long double) 1000000.0; printf("%s. Tempo: %lf ms (%lf s)\n", verifica(v1, tam) ? "OK":"ERRO", cpu_time, cpu_time/1000); tempo[0] += cpu_time; } // selection if (strchr(metodos, '2') != NULL) { printf("Selection sort...\n"); start = chrono::steady_clock::now(); selectionSort(v3, tam); end = chrono::steady_clock::now(); cpu_time = chrono::duration_cast<chrono::nanoseconds>(end - start).count() / (long double) 1000000.0; printf("%s. Tempo: %lf ms (%lf s)\n", verifica(v3, tam) ? "OK":"ERRO", cpu_time, cpu_time/1000); tempo[1] += cpu_time; } // insertion if (strchr(metodos, '3') != NULL) { printf("Insertion sort...\n"); start = chrono::steady_clock::now(); insertionSort(v2, tam); end = chrono::steady_clock::now(); cpu_time = chrono::duration_cast<chrono::nanoseconds>(end - start).count() / (long double) 1000000.0; printf("%s. Tempo: %lf ms (%lf s)\n", verifica(v2, tam) ? "OK":"ERRO", cpu_time, cpu_time/1000); tempo[2] += cpu_time; } // shell if (strchr(metodos, '4') != NULL) { printf("Shell sort...\n"); start = chrono::steady_clock::now(); shellSort(v4, tam); end = chrono::steady_clock::now(); cpu_time = chrono::duration_cast<chrono::nanoseconds>(end - start).count() / (long double) 1000000.0; printf("%s. Tempo: %lf ms (%lf s)\n", verifica(v4, tam) ? "OK":"ERRO", cpu_time, cpu_time/1000); tempo[3] += cpu_time; } // quick if (strchr(metodos, '5') != NULL) { printf("Quick sort...\n"); start = chrono::steady_clock::now(); quickSort(v5, tam); end = chrono::steady_clock::now(); cpu_time = chrono::duration_cast<chrono::nanoseconds>(end - start).count() / (long double) 1000000.0; printf("%s. Tempo: %lf ms (%lf s)\n", verifica(v5, tam) ? "OK":"ERRO", cpu_time, cpu_time/1000); tempo[4] += cpu_time; } // merge if (strchr(metodos, '6') != NULL) { printf("Merge sort...\n"); start = chrono::steady_clock::now(); mergeSort(v6, tam); end = chrono::steady_clock::now(); cpu_time = chrono::duration_cast<chrono::nanoseconds>(end - start).count() / (long double) 1000000.0; printf("%s. Tempo: %lf ms (%lf s)\n", verifica(v6, tam) ? "OK":"ERRO", cpu_time, cpu_time/1000); tempo[5] += cpu_time; } //radixsort if (strchr(metodos, '7') != NULL) { printf("Radix sort...\n"); start = chrono::steady_clock::now(); radixsort(v7, tam); end = chrono::steady_clock::now(); cpu_time = chrono::duration_cast<chrono::nanoseconds>(end - start).count() / (long double) 1000000.0; printf("%s. Tempo: %lf ms (%lf s)\n", verifica(v7, tam) ? "OK":"ERRO", cpu_time, cpu_time/1000); tempo[6] += cpu_time; } } if (iter > 1) { printf("-------------------------------------------\nTempos medios:\n"); if (strchr(metodos, '1') != NULL) printf("Bubble sort: %lf ms (%lf s)\n", tempo[0]/iter, tempo[0]/(iter*1000)); if (strchr(metodos, '2') != NULL) printf("selection sort: %lf ms (%lf s)\n", tempo[1]/iter, tempo[1]/(iter*1000)); if (strchr(metodos, '3') != NULL) printf("Insertion sort: %lf ms (%lf s)\n", tempo[2]/iter, tempo[2]/(iter*1000)); if (strchr(metodos, '4') != NULL) printf("Shell sort: %lf ms (%lf s)\n", tempo[3]/iter, tempo[3]/(iter*1000)); if (strchr(metodos, '5') != NULL) printf("Quick sort: %lf ms (%lf s)\n", tempo[4]/iter, tempo[4]/(iter*1000)); if (strchr(metodos, '6') != NULL) printf("Merge sort: %lf ms (%lf s)\n", tempo[5]/iter, tempo[5]/(iter*1000)); if (strchr(metodos, '7') != NULL) printf("Radix sort: %lf ms (%lf s)\n", tempo[6]/iter, tempo[6]/(iter*1000)); } free(v); free(v1); free(v2); free(v3); free(v4); free(v5); free(v6); free(v7); }
-
Me ajudem a fazer esse ultimo pedaço do meu programa
FTgamexx@gmail.com postou um tópico no fórum C/C++
Aprendi a mexer no C++ a um mês porem não sei muto bem como faz algumas coisas, preciso acrescentar isso no meio dele int ckdig (int n, int* p, int* i) { int d = 0; if(n < 0) n = -n; *p = *i = 0; while(n) { if((n % 2) == 0) (*p)++; else (*i)++; n /= 10; d++; } return d; } int main (int argc, char** argv) { int n, p, i, d; puts("Digite um número:"); scanf("%d", &n); d = ckdig(n, &p, &i); printf("Dentre os %d dígitos, há %d pares e %d ímpares.\n", d, p, i); return 0; } porem tem que usar os números que eu coloco dentro do vetor deixei um em //Pares e impares para colocar o comando //Bibliotecas #include <stdio.h> #include <locale.h> //cria uma constante #define N 6 int main() { //Variaveis int vet[N], i, maior, menor,soma=0,*p,*m,d; //preenche o vetor printf("Digite N :\n"); for (i = 0; i < N; i++) { scanf("%i", &vet); } //encontra o maior valor maior = vet[0]; for (i = 1; i < N; i++) { if (vet > maior) { maior = vet; } } //encontra o menor valor menor = vet[0]; for (i = 1; i < N; i++) { if (vet < menor) { menor = vet; } } //calculo da soma for(i=0; i<N; i++){ soma=soma+vet; } //Acento (setlocale(LC_ALL,"")); //Impares e Pares //Comando na tela printf("\nA soma é: %i ", soma); printf("\nMaior valor: %i ", maior); printf("\nMenor valor: %i ", menor); return 0; } -
Linguagem c (ajuda com armazenamento)
victormota1695 postou uma questão Perguntas e respostas rápidas
Estou desenvolvendo um programa para trabalho de faculdade onde preciso usar estrutura de repetição para perguntar ao usuario um nome/itens armazena-los e quando o usuario nao quiser mais digitar os nomes ao sair do loop mostra todos os nomes que ele digitou. nao estou conseguindo preciso de ajuda. dese ja agradeço. meu codigo ate o momento e: #include <stdio.h> #include<stdlib.h> int main (){ char lista,lista2; int menu1,menu2; printf("***BEM-VINDO AO LISTSUPER***\n\n"); // ****Aqui o 1º menu de seleção****// printf("Escolha uma opção\n"); printf("1-inserir novos itens\n2-inserir quantidade\n3-calcular valor\n4-mostrar itens\n\n"); scanf("%i",&menu1); // ***Aqui e o loop para digitar os itens desejados****// if (menu1==1){ while(1) { printf("insira os itens\n"); scanf("%s",&lista); printf("deseja inserir novos itens? [1-sim/2-nao]\n"); scanf("%i",&menu2); if (menu2==2){ break;} } } // ***Caso ele não selecione a opção para inserir novos itens aparecera esta mensagem***// else { printf("Não ha itens inseridos\nEscolha a opção ( inserir novos itens )"); } //***Apos acabar de digitar os itens mostrar a lista dos itens digitados***// return 0; } -
Alguem pode me ajudar com esse algoritmo,fiz esse porem quando digito 10000 ele cai nos dois ultimos ifs.. Sabendo que o reajuste dos imposto de renda será de 7% para renda de até R$ 5.000,00, de 8% para rendas até R$ 8.000,00 e de 10% para rendas superiores a R$ 8.000,00, dado uma renda qualquer defina qual é o imposto a ser aplicado #include <bits/stdc++.h> using namespace std; int main() { float imposto,salario,deduzir,deduzir1,deduzir2; printf("\nDigite seu salario"); scanf("%f",&salario); if(salario==5000.00){ printf("Seu imposto é de 350R$"); } if(salario==8000.00);{ printf("Seu imposto é de 640R$"); } if(salario>8000.00){ printf(" O seu imposto é de 800 R$"); } return 0; }
-
Tava fazendo um exercício e ele pede pro programa exibir os 20 primeiros números primos depois do 100. Por enquanto eu fiz ele assim mas não sei onde colocar o num++ pra ir aumentando o valor do numero a ser testado. Ja tentei colocar em varios lugares do codigo e nao deu certo em nenhum deles e tb nao consigo achar oq tem de errado
-
Pessoal me ajudem não encontrei muita coisa sobre isso.. o exercício é o seguinte, tenho que desenvolver um programa em linguagem C, Java ou C# para a busca em texto utilizando o método SHIFT-AND. DESCRIÇÃO: O programa deverá ler um ARQUIVO TEXTO contendo o texto objeto de pesquisa com todas as letras escritas em minúsculas (texto que será pesquisado), deverá ler do teclado o texto à pesquisar (Padrão) e realizar a busca do Padrão no Texto utilizando o método SHIFT-AND. SAÍDA: O programa deverá pesquisar pelo PADRÃO no TEXTO, utilizando o método SHIFT-AND e converter em MAIÚSCULAS todas as ocorrências do PADRÃO no TEXTO, ou exibir na tela uma mensagem informando que o PADRÃO não foi encontrado no TEXTO, se este for o caso. Alguém pode me ajudar ?
-
Bem pessoal, eu estou querendo adicionar pontos em um valor inteiro, para explicar melhor vamos ao código: char text[30]; int value = 10000000000; sprintf(text, "O valor ganho foi de: %d", value); cis->print_message(text); Eu queria saber uma forma de retornar o valor com pontos, ficando da seguinte forma: 10.000.000.000 Alguém tem alguma ideia ?
-
Boa noite. Preciso de ajuda neste algoritmo em c++ da matéria de estrutura de dados. Não sei por onde começar. Obrigado! Fazer um programa que utiliza um vetor X de 10 posições e lê 20 valores inteiros situados no intervalo [1,99]. Utilize, ainda, duas variáveis, T1 e T2 inicializadas, respectivamente, com 0 e 11, de tal forma que, no vetor X, tenha-se duas pilhas de bases opostas. Para cada valor lido: se for par e maior do que 50, inseri-lo na pilha 1; se for par e menor ou igual a 50, então retirar o elemento do topo da pilha 1 e escrevê-lo; se for ímpar e maior do que 50, inseri-lo na pilha 2; se o valor lido for ímpar e menor ou igual a 50, então retirar o valor do topo da pilha 2 e escrevê-lo; se ocorrer uma situação de UNDERFLOW, escreva uma mensagem e ignore o valor lido passando a ler o novo valor; se ocorrer OVERFLOW ou se já tiverem sido lidos 20 valores, então escrever o conteúdo das duas pilhas e terminar o programa;