Jump to content
xande013

Matrizes e Vetores em C++ nível iniciante

Recommended Posts

/*

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?

Edited by xande013
erro gramatical

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By vinicius.benedito98
      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 ", &nota); 
      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 ?
    • By Vitor Dória
      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.
    • By matheusxds12
      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; }  
    • By Svinnicius
      Ao sair de um procedimento e entrar em outro, ta apresentando erro quando tento finalizar o programa.
       
      Var
      // Seção de Declarações das variáveis 
      nome: vetor [1..3]  de caractere
      telef: vetor [1..3]  de caractere
      ema: vetor [1..3]  de caractere
      codigo,codigo_contato,codigo_contato_cheio, menu_apagar,opc, opc1: inteiro
      cont, menu_mostrar,op: inteiro
      procedimento principal()
      Inicio
      // Seção de Comandos, procedimento, funções, operadores, etc... 
      repita
      escreval ("")
      escreval ("=== AGENDA TELEFÔNICA ===")
      escreval ("")
      escreval ("1. Inserir novo contato")
      escreval ("2. Apagar contato")
      escreval ("3. Mostrar todos os contatos")
      escreval ("4. Sair")
      escreva ("Digite opcao: ")
      leia (codigo)
      limpatela
      ate (codigo=1) ou (codigo=2) ou (codigo=3) ou (codigo=4)
      escolha (codigo)
      caso 1
         contato()
      caso 2
         apagar()
      caso 3
         mostrar()
      caso 4
         interrompa
      fimescolha
      fimprocedimento
      //---------------------- NOVO CONTATO ----------------------
      procedimento contato()
      inicio
      para cont de 1 ate 3 faca
      limpatela
      escreval("== INSERIR NOVO CONTATO ==")
            escreva ("Nome: ")
            leia (nome[cont])
            escreva ("Telefone: ")
            leia (telef[cont])
            escreva ("E-mail: ")
            leia (ema[cont])
            escreval("")
            escreval("Usuario cadrastrado com sucesso")
            repita
            escreval("")
            escreval("1.Insira novo contato")
            escreval("2.Voltar ao menu")
            escreval("")
            escreva("Digite opção: ")
            leia(codigo_contato)
      escolha (codigo_contato)
      caso 1
      escreva("")
      caso 2
         interrompa
         limpatela
         principal()
      outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      limpatela
      fimescolha
      ate codigo_contato = 1
      fimpara
      limpatela
                escreval("")
                escreval("Lista de contato cheia")
                repita
                escreval("")
                escreval("1.Voltar ao menu")
                escreval("2.Sair")
                escreval("")
                escreval("Digite opção")
                leia(codigo_contato_cheio)
          escolha (codigo_contato_cheio)
                caso 1
                limpatela
                principal()
                caso 2
                interrompa
                outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      limpatela
      fimescolha
      ate codigo_contato_cheio = 1
      fimprocedimento

      //------------------------ Apagar contato------------------------------------
      procedimento apagar()
      inicio
      limpatela
      escreval("== APAGAR CONTATO ==")
      Escreval("")
      escreva ("Qual contato você quer apagar? ")
      Escreval("")
      para cont de 1 ate 3 faca
      Escreval(cont,". ",nome[cont])
      fimpara
      Escreval("")
      Escreva("Digite opção:")
      Leia(opc)
      se opc >0 entao
         se opc <4 entao
      nome[opc]<-""
      telef[opc]<-""
      ema[opc]<-""
      Escreval("")
      Escreval("Contato Apagado com sucesso")
      repita
      escreval("")
      escreval("1.Apagar outro contato")
      escreval("2.Voltar ao menu")
      escreval("3.Sair")
      escreva("Digite opção:")
      leia(menu_apagar)
      Escolha(menu_apagar)
      caso 1
      limpatela
      apagar()
      caso 2
      limpatela
      principal()
      caso3
      interrompa
      outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      senao
      apagar()
      fimse
      fimse
      fimse
      fimescolha
      ate menu_apagar = 3
      fimprocedimento
      //-------------------------- Mostrar todos os contatos ---------------------
      procedimento mostrar()
      inicio
      limpatela
      escreval("== LISTA DE CONTATOS ==")
      Escreval("")
      para cont de 1 ate 3 faca
      Escreval(cont,". ",nome[cont])
      fimpara
      Escreval("")
      Escreva("Digite opção:")
      Leia(opc1)
      se opc1 >0 entao
         se opc1 <4 entao
      limpatela
      Escreval("Nome: ",nome[opc1])
      Escreval("Telefone: ",telef[opc1])
      Escreval("E-mail: ",ema[opc1])
      repita
      escreval("")
      escreval("1.Mostrar outro contato")
      escreval("2.Voltar ao menu")
      escreval("")
      escreva("Digite opção:")
      Leia(menu_mostrar)
      Escolha(menu_mostrar)
      caso 1
      limpatela
      mostrar()
      caso 2
      limpatela
      principal()
      outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      senao
      mostrar()
      fimse
      fimse
      fimescolha
      limpatela
      ate menu_mostrar = 1
      fimprocedimento
      inicio
      // Seção de Comandos
        principal()
      Fimalgoritmo
    • By ross
      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
      //////////////////////////////////////////////////////////////////////////////////////////////
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.