Ir ao conteúdo
  • Cadastre-se

Ajuda matriz em C++


NNeto

Posts recomendados

#include<iostream>
using namespace std;
int main()
{
int i=0,k,j;
int cont1=0,cont2=0,cont3=0,cont4=0,cont5=0;
string nome;
int resp[i][10];
while(nome!="sair")
{
cout<<"Nome["<<i<<"]: ";
getline(cin,nome);
i++;
}
for(j=1;j<=i;j++)
{
for(k=1;k<=10;k++)
{
cout<<"Pessoa["<<j<<"].Resposta["<<k<<"]: ";
cin>>resp[j][k];
}
}
for(j=1;j<=i;j++)
{
for(k=1;k<=10;k++)
{
if(resp[j][k]==1)
{
cont1++;
}
if(resp[j][k]==2)
{
cont2++;
}
if(resp[j][k]==3)
{
cont3++;
}
if(resp[j][k]==4)
{
cont4++;
}
if(resp[j][k]==5)
{
cont5++;
}
}
}
cout<<"Pessoas que responderam 1: "<<cont1<<endl;
cout<<"Pessoas que responderam 2: "<<cont2<<endl;
cout<<"Pessoas que responderam 3: "<<cont3<<endl;
cout<<"Pessoas que responderam 4: "<<cont4<<endl;
cout<<"Pessoas que responderam 5: "<<cont5<<endl;
system("pause");
return 0;
}

Esse programa deveria ler os nomes das pessoas que responderam uma pesquisa de 10 perguntas com alternativas de 1 a 5 e depois imprimir quantas pessoas responderam 1,2,3,4 ou 5. Eu fiz esse código acima mas quando eu compilo o programa gera um erro na posição da resposta(1,7). Eu não consigo achar erro na lógica, por favor ajudem :wacko: .

Link para o comentário
Compartilhar em outros sites

Você declarou a matriz resp[10], em que i seria o numero de pessoas e 10 as questões, mas essa matriz só tem uma linha e só armazena uma pessoa, então ao colocar mais de uma pessoa você tava extrapolando os limites da matriz, assim como nos laços for onde você começava a contagem a partir de 1 sendo que a primeira posição de um vetor é 0.

Eu simplifiquei o codigo e coloquei só um laço for dentro do laço while e usei apenas um vetor resp[10], veja abaixo como ficou:


#include<iostream>
#include<stdlib.h>

using namespace std;

int main()
{
int i=0,k,j;
int cont1=0,cont2=0,cont3=0,cont4=0,cont5=0;
string nome;
int resp[10];

//aqui você pretende armazenar a resposta de cada pessoa para 10 perguntas, mas a
//sua matriz resposta é de resp[1][10], da no maximo pra uma pessoa
//nesse programa você não precisa necessariamente usar essa matriz
//vou reescrever essa parte de outra forma

while(nome!="sair"){
i++;

cout<<"Nome["<<i<<"]: ";
cin.ignore();//limpar o buffer
getline(cin,nome);

if(nome=="sair"){
break;//sai do laço
}

//aqui você queria preencher um vetor de 10 posições começando de 1 ate 10
//assim você estava estrapolando o seu vetor pois ele começa em 0
for(k=0;k<10;k++){

cout<<" "<<nome<<" sua Resposta pergunta ["<<k + 1<<"]: ";
cin>>resp[k];

if(resp[k]==1){
cont1++;
}

if(resp[k]==2){
cont2++;
}
if(resp[k]==3){
cont3++;
}
if(resp[k]==4){
cont4++;
}
if(resp[k]==5){
cont5++;
}
}
}

cout<<"Pessoas que responderam 1: "<<cont1<<endl;
cout<<"Pessoas que responderam 2: "<<cont2<<endl;
cout<<"Pessoas que responderam 3: "<<cont3<<endl;
cout<<"Pessoas que responderam 4: "<<cont4<<endl;
cout<<"Pessoas que responderam 5: "<<cont5<<endl;

system("pause");
return 0;
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

×
×
  • Criar novo...