Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com comando de repetição.


Fc-hardware

Pergunta

#include<stdio.h>
#include<string.h>
#include<stdlib.h>


struct cadastro
{
char nome[10];
int matricula;
}aluno[2];


int main()
{
int i,op,k;
char resp;

resp='s';
while(resp='s')
do
{

printf("1-Cadastrar alunos\n");
printf("2-Sair\n");
scanf("%d",&op);

printf("Digite qtos alunos você deseja cadastrar");
scanf("%d",&k);

struct cadastro aluno[10];

if(op==1)
{
    for(i=0;i<k;i++)
    {
    printf("Digite o nome do aluno %d\n",i+1);
    scanf("%s",aluno[i].nome);
    printf("Digite o numero de matricula do aluno %d\n",i+1);
    scanf("%d",&aluno[i].matricula);
    }
}

if (op==2)
printf("Obrigado");

printf("Deseja continuar? s/n \n");
scanf("%c",&resp);
}
while(resp='s');
printf("\n");

system("pause");
}

Gostaria que esse bloco de instrução se repetisse enquanto a resposta fosse "S", mas n é isso que acontece.. alguém poderia me ajudar?

grato.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Olá, Fc-hardware

Experimente trocar a linha while(resp='s'); para while(resp=='s');, isto é, com dois sinais de igual.

Isso porque o = significa atribuição. A variável resp está recebendo o valor 's', e não comparando-se com ele. Para fazer a comparação, utiliza-se ==.

Espero que funcione. Abraços!

Editado por RSalvador
Link para o comentário
Compartilhar em outros sites

  • 0

agora já está executando o comando de repeticao normalmente.. o problema agora é que ele não está exibindo a opção 2 do menu (EXIBIR)

segue o algo

#include<stdio.h>
#include<string.h>
#include<stdlib.h>


struct cadastro
{
char nome[10];
int matricula;
}aluno[2];


int main()
{
int i,op,k,w;
char resp;

resp='s';
while(resp=='s')
{
printf("1-Cadastrar alunos\n");
printf("2-Exibir alunos cadastrados\n");
printf("2-Sair\n");
scanf("%d",&op);



struct cadastro aluno[10];

if (op==1)
{
printf("Digite qtos alunos você deseja cadastrar");
scanf("%d",&k);
    for(i=0;i<k;i++)
    {
    printf("Digite o nome do aluno %d\n",i+1);
    scanf("%s",aluno[i].nome);
    printf("Digite o numero de matricula do aluno %d\n",i+1);
    scanf("%d",&aluno[i].matricula);
    }
}

if (op==2)
{
    for (i=0;i<k;i++){
    printf("%s",aluno[i].nome);
    printf("%s",aluno[i].matricula);
}
}
printf("Deseja consultar mais algo? s/n\n");
scanf("%s",&resp);
}
}

Link para o comentário
Compartilhar em outros sites

  • 0

Fc-hardware,

O problema do seu código parece estar nos if's. O segundo if inicia com um um for de 0 a k. Mas k só recebe algum valor no primeiro if.

Talvez, quando o compilador entra no segundo if, ele encontra apenas lixo na memória relativa à variável k e encerra o for por não encontrar um valor para o fim do laço. Tente declarar algum valor para k fora do laço. Se funcionar, basta adaptar seu código a esta situação.

Abraço!

Editado por RSalvador
Link para o comentário
Compartilhar em outros sites

  • 0

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

struct cadastro

{

char nome[10];

int matricula;

}aluno[2];

int main()

{

int i,op,k;

char resp;

resp='s';

while (resp != 'n'){

printf("1-Cadastrar alunos\n");

printf("2-Sair\n");

scanf("%d",&op);

printf("Digite qtos alunos você deseja cadastrar");

scanf("%d",&k);

struct cadastro aluno[10];

if(op==1)

{

for(i=0;i<k;i++)

{

printf("Digite o nome do aluno %d\n",i+1);

scanf("%s",aluno.nome);

printf("Digite o numero de matricula do aluno %d\n",i+1);

scanf("%d",&aluno.matricula);

}

}

if (op==2){

printf("Obrigado");

}

printf("Deseja continuar? s/n \n");

scanf("%c",&resp);

}

system("pause");

}

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

struct cadastro

{

char nome[10];

int matricula;

}aluno[2];

int main()

{

int i,op,k;

char resp;

resp='s';

while ((resp == 's') || (resp == 'S')){

printf("1-Cadastrar alunos\n");

printf("2-Sair\n");

scanf("%d",&op);

printf("Digite qtos alunos você deseja cadastrar");

scanf("%d",&k);

struct cadastro aluno[10];

if(op==1)

{

for(i=0;i<k;i++)

{

printf("Digite o nome do aluno %d\n",i+1);

scanf("%s",aluno.nome);

printf("Digite o numero de matricula do aluno %d\n",i+1);

scanf("%d",&aluno.matricula);

}

}

if (op==2){

printf("Obrigado");

}

printf("Deseja continuar? s/n \n");

scanf("%c",&resp);

}

system("pause");

}

#include<stdio.h>
#include<string.h>
#include<stdlib.h>


struct cadastro
{
char nome[10];
int matricula;
}aluno[2];


int main()
{
int i,op,k;
char resp;

resp='s';
while(resp='s')
do
{

printf("1-Cadastrar alunos\n");
printf("2-Sair\n");
scanf("%d",&op);

printf("Digite qtos alunos você deseja cadastrar");
scanf("%d",&k);

struct cadastro aluno[10];

if(op==1)
{
    for(i=0;i<k;i++)
    {
    printf("Digite o nome do aluno %d\n",i+1);
    scanf("%s",aluno[i].nome);
    printf("Digite o numero de matricula do aluno %d\n",i+1);
    scanf("%d",&aluno[i].matricula);
    }
}

if (op==2)
printf("Obrigado");

printf("Deseja continuar? s/n \n");
scanf("%c",&resp);
}
while(resp='s');
printf("\n");

system("pause");
}

Gostaria que esse bloco de instrução se repetisse enquanto a resposta fosse "S", mas n é isso que acontece.. alguém poderia me ajudar?

grato.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...