Home › Fóruns › Linguagem C › Modulo 1 EX004 preciso de uma ajuda.
- Este tópico contém 7 respostas, 5 vozes e foi atualizado pela última vez 1 ano, 11 meses atrás por
Tutora Jessica.
-
AutorPosts
-
-
16 de maio de 2021 às 14:16 #67224
publio caio pires bispo rodrigues
Participantebom a ajuda é sobre o espaçamento da listagem, eu consigo fazer, só que tem um pequeno problema se o nome for muito grande ele quebra o espaçamento mesmo eu limitando o char [20] ele deixa escrever mais que isso e manda a informação pro printf. acho que não sei explicar direito então vou colar o codigo aqui se alguem puder me explicar como travar o char ou a informação do printf sair só aqueles 20 caracteres ia ficar melhor.
#include <stdio.h> #include <stdlib.h> #include <locale.h> void main(){ setlocale(LC_ALL, "Portuguese"); char nome1[20],nome2[20],nome3[20]; char c1,c2,c3; float nota1,nota2,nota3; printf("<<< EX004 - LISTAGEM >>>\n\n"); //primeira pessoa nome1 c1 nota1 printf("Cadastrando a Primeira pessoa:\n"); printf("------------------------------"); fflush(stdin); printf("\nNome: "); gets(nome1); fflush(stdin); printf("SEXO [M/F]: "); scanf("%c", &c1); fflush(stdin); printf("NOTA: "); scanf("%f", ¬a1); //segunda pessoa nome2 c2 nota2 fflush(stdin); printf("\n\nCadastrando a Segunda pessoa:\n"); printf("------------------------------"); fflush(stdin); printf("\nNome: "); gets(nome2); fflush(stdin); printf("SEXO [M/F]: "); scanf("%c", &c2); fflush(stdin); printf("NOTA: "); scanf("%f", ¬a2); //terceira pessoa nome3 c3 nota3 fflush(stdin); printf("\n\nCadastrando a Terceira pessoa:\n"); printf("------------------------------"); fflush(stdin); printf("\nNome: "); gets(nome3); fflush(stdin); printf("SEXO [M/F]: "); scanf("%c", &c3); fflush(stdin); printf("NOTA: "); scanf("%f", ¬a3); //tabela final printf("\n\nListagem Completa"); printf("\n-------------------------------------"); /* // as duas maneiras só consigo alinhar se o nome for menor que 20 caracteres se passar de 25 a 30 ele desalinha printf("\nNOME\t\t\tSEXO\tNOTA"); printf("\n%-20s\t %-1c\t%.1f",nome1,c1,nota1); printf("\n%-20s\t %-1c\t%.1f",nome2,c2,nota2); printf("\n%-20s\t %-1c\t%.1f",nome3,c3,nota3); */ printf("\nNOME\t\t\tSEXO\tNOTA\n%-20s\t %-1c\t%.1f\n%-20s\t %-2c\t%.1f\n%-20s\t %-1c\t%.1f", nome1,c1,nota1,nome2,c2,nota2,nome3,c3,nota3); printf("\n-------------------------------------"); /*OBS NÃO CONSIGO ALINHAR O NOME SE ELE FOR MUITO GRANDE EXEMPLO CAIO PIRES BISPO RODRIGUES ele passa a configuração teria como alinhar se afastar mais o SEXO E NOTA mais ficaria muito grande ai daria pra colocar -30s e ter um espaçamento 30 do SEXO ou travar o nome para ter no maximo aquele numero de caracteres, eu coloquei 20 mais mesmo assim consigo digitar mais que 20 */
-
17 de maio de 2021 às 19:30 #67315
Tutora Mayla
MestreCaio, uma das soluções para este problema envolve utilizar o caractere especial
\0
. No C as strings têm o seu final demarcado por este caractere, então podemos utilizá-lo para limitar uma string a um tamanho qualquer.
Por exemplo, se após a leitura denome1
é desejado garantir que ela tenha tamanho no máximo 20, pode-se fazernome1[20] = '\0';
. Isto irá inserir o marcador de fim de string na posição 20 e depois, ao escrever no terminal, serão escritos apenas os 20 primeiros caracteres da string.Espero ter ajudado, caso a dúvida persista volte a entrar em contato.
-
8 de maio de 2023 às 23:32 #115557
Vanderlei de Santana de Andrade
Participanteprintf(“NOME\t\tSEXO\tNOTA\n”);
printf(“%s\t%2c\t%.1f\n”, nome1, sexo1, nota1);
fflush(stdin);
printf(“%s\t%2c\t%.1f\n”, nome2, sexo2, nota2);
fflush(stdin);
printf(“%s\t%2c\t%.1f\n”, nome3, sexo3, nota3); -
9 de maio de 2023 às 10:29 #115587
Tutora Jessica
ModeradorOla Vanderlei, alguma duvida?
-
9 de maio de 2023 às 12:40 #115594
MARCIO PAIVA
ParticipanteBom dia, tudo bem Jéssica?
Estou também estudando a linguagem c
já fiz quatro exercícios. Gostaria que desse uma analisada
para ver se estou andando no modo certo. desde já agradeçoeis aqui o código da linguagem c para analise esse é o exercício de número quatro:
#import <stdio.h> #include <locale.h> void main() { char * nome1[30]; char * nome2[30]; char * nome3[30]; char sexo1; char sexo2; char sexo3; float nota1,nota2,nota3; setlocale(LC_ALL,"portuguese"); printf("<<< EX004 - Listagem >>>\n"); printf("\nCadastrando a primeira pessoa:\n"); printf("--------------------------------\n"); printf("NOME: "); fflush(stdin); gets(nome1); printf("SEXO [M/F]: "); fflush(stdin); sexo1 = getchar(); printf("NOTA: "); scanf("%f", ¬a1); printf("\nCadastrando a segunda pessoa:\n"); printf("------------------------------\n"); printf("NOME: "); fflush(stdin); gets(nome2); printf("SEXO [M/F]: "); fflush(stdin); sexo2 = getchar(); printf("NOTA: "); scanf("%f", ¬a2); printf("\nCadastrando a terceira pessoa:\n"); printf("-------------------------------\n"); printf("NOME: ");
-
9 de maio de 2023 às 12:45 #115595
MARCIO PAIVA
ParticipantePeço desculpa acabei enviando o código pela metade e ainda por cima errado.
vou enviar de novo eis aqui o código do exercício como já mencionei anteriormente:
#import <stdio.h> #include <locale.h> void main() { char * nome1[30]; char * nome2[30]; char * nome3[30]; char sexo1; char sexo2; char sexo3; float nota1,nota2,nota3; setlocale(LC_ALL,"portuguese"); printf("<<< EX004 - Listagem >>>\n"); printf("\nCadastrando a primeira pessoa:\n"); printf("--------------------------------\n"); printf("NOME: "); fflush(stdin); gets(nome1); printf("SEXO [M/F]: "); fflush(stdin); sexo1 = getchar(); printf("NOTA: "); scanf("%f", ¬a1); printf("\nCadastrando a segunda pessoa:\n"); printf("------------------------------\n"); printf("NOME: "); fflush(stdin); gets(nome2); printf("SEXO [M/F]: "); fflush(stdin); sexo2 = getchar(); printf("NOTA: "); scanf("%f", ¬a2); printf("\nCadastrando a terceira pessoa:\n"); printf("-------------------------------\n"); printf("NOME: "); fflush(stdin); gets(nome3); printf("SEXO [M/F]: "); sexo3 = getchar(); printf("NOTA: "); scanf("%f", ¬a3); printf("\nListagem Completa"); printf("\n-------------------------------------------\n"); printf("NOME SEXO NOTA\n"); printf("%-20s", nome1,"\n"); printf("%8c", sexo1); printf(" \t\t\b\b\b\b%.1f",nota1); printf("\n%-20s", nome2); printf("%8c", sexo2); printf(" \t\t\b\b\b\b%.1f", nota2); printf("\n%-20s", nome3); printf("%8c", sexo3); printf(" \t\t\b\b\b\b%.1f", nota3);
/*Muito bom esse desafio aprendi bastante
a desenvolver o raciocínio lógico. Esse exercício
foi bem marcante para mim.
*/}
-
9 de maio de 2023 às 16:14 #115623
Tutora Jessica
ModeradorOla Marcio, seu código só esta correto no primeiro cadastro, a partir do segundo ele já não deixa colocar o nome, já vai direto para sexo.
Veja se consegue resolver , veja os exemplos acima.
Caso não consiga, retorne ao fórum que vamos tentar lhe ajudar. -
9 de maio de 2023 às 16:15 #115624
Tutora Jessica
ModeradorNo fórum tem outras explicações desse exercício também caso prefira.
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.