Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
NNeto

Ajuda matriz em C++

Recommended Posts

#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: .

Compartilhar este post


Link para o post
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;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×