Ir ao conteúdo
  • Cadastre-se

C # cod C o quadrado de 1 a N


Ir à solução Resolvido por AdrianoSiqueira,

Posts recomendados

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

int main() {
	int i, p, x, qdr;
		scanf("%d", &x);
		
		if (x<=0){
    printf("Numero invalido\n");
    }
	for (i=1; i<=x; i++) {
		qdr=1;
		
		for(p=1; p<=2; p++){
		    qdr= i * qdr;
			
		      printf(" O quadrado de %d é" , qdr);				
	    }
		    printf(" \n");
    }
	return 0;
    }

Boa tarde. Estou aprendendo a programar em C  e tentando fazer um programa para apresentar o quadrado de 1 até N, mas estou tendo problemas na saída, que ao digitar 3 tem de ser do tipo: 

O quadrado de 1 eh 1

O quadrado de 2 eh 4

O quadrado de 3 eh 9

Mas o meu esta saindo: 

O quadrado de 1 � O quadrado de 1 � 

O quadrado de 2 � O quadrado de 4 � 

O quadrado de 3 � O quadrado de 9 � 

Como posso resolver?

Muito grato por ajudarem.

Fiz o código dessa forma:

 

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

int main() {
    int i, p, x, qdr;
        scanf("%d", &x);
        
        if (x<=0){
    printf("Numero invalido\n");
    }
    for (i=1; i<=x; i++) {
        qdr=1;
        
        for(p=1; p<=2; p++){
            qdr= i * qdr;
            
              printf(" O quadrado de %d é" , qdr);                
        }
            printf(" \n");
    }
    return 0;
    }

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

Algumas observações:

  1. Sempre inicialize todas as suas variáveis, independente se elas receberão um valor logo em seguida.
  2. As linhas são de graça, pode usar a vontade. Procure criar uma variável por linha, isso facilita a leitura do código.
  3. Atente-se à indentação, um código organizado é mais fácil de ler e corrigir.

Sobre seu código, ele está bem confuso, procure fazer o simples:

Spoiler

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

int main() {
    int x = 0;
    int qdr = 0;

    printf("Digite um numero: ");
    scanf("%d", &x);

    if (x <= 0){
        printf("Numero invalido \n");
        return 1;
    }
    
    for (int i = 1; i <= x; i++) {
        qdr = i * i;
        printf("O quadrado de %d é %d \n", i, qdr);
    }

    return 0;
}

 

 

  • Curtir 2
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Em 01/01/2021 às 18:15, AdrianoSiqueira disse:

Algumas observações:

  1. Sempre inicialize todas as suas variáveis, independente se elas receberão um valor logo em seguida.
  2. As linhas são de graça, pode usar a vontade. Procure criar uma variável por linha, isso facilita a leitura do código.
  3. Atente-se à indentação, um código organizado é mais fácil de ler e corrigir.

Sobre seu código, ele está bem confuso, procure fazer o simples:

  Mostrar conteúdo oculto






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

int main() {
    int x = 0;
    int qdr = 0;

    printf("Digite um numero: ");
    scanf("%d", &x);

    if (x <= 0){
        printf("Numero invalido \n");
        return 1;
    }
    
    for (int i = 1; i <= x; i++) {
        qdr = i * i;
        printf("O quadrado de %d é %d \n", i, qdr);
    }

    return 0;
}

 

 

Valeu Adriano. Obrigado pelas dicas. Como estou aprendendo, preciso perguntar se "int" pode entrar no for, não seria uma biblioteca reservada, no modelo que voce enviou o int esta dentro do for? 

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Ieybdcbd Çcldcf disse:

Valeu Adriano. Obrigado pelas dicas. Como estou aprendendo, preciso perguntar se "int" pode entrar no for, não seria uma biblioteca reservada, no modelo que voce enviou o int esta dentro do for? 

Tirei int do for e declarei i como variável e deu certo obrigado

1 minuto atrás, Ieybdcbd Çcldcf disse:

Tirei int do for e declarei i como variável e deu certo obrigado

Deu certo agora:

 

 

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

int main() {
    int x = 0;
    int qdr = 0;
    int i= 0;

     scanf("%d", &x);

    if (x <= 0){
        printf("Numero invalido \n");

    }
    
    for (i = 1; i <= x; i++) {
        qdr = i * i;
        printf("O quadrado de %d eh %d \n", i, qdr);
    }

    return 0;
}

Link para o comentário
Compartilhar em outros sites

4 horas atrás, Ieybdcbd Çcldcf disse:

Tirei int do for e declarei i como variável e deu certo obrigado

 

Não  "deu certo" porque fez isso ou deixou de fazer isso.

 

E está errado. Levou muitos anos para que isso fosse incorporado '`a linguagem C. Mas foi, e há uns 40 anos atrás. Declare as variáveis de controle do loop DENTRO do for.

 

Em especial uma variável com o nome ingênuo de "i", que pode ser usado linhas depois já que ela declarada como fez vai ficar "viva" por todo o programa. É uma ideia ruim. Bem ruim. E sempre vai cair na sua cabeça.

 

Faça como @AdrianoSiqueira recomendou. Se seu compilador não aceita, use as opções corretas. Isso é dos anos 80, e o tempo passou para todos incluindo C. 

 

Se seu IDE não aceita, mude. Se não sabe como configurar, aprenda. É essencial se quer fazer algo útil programando computadores. Que tal algo simples como:

 

gcc -std=c17 -Wall -Wextra -O3 programa.c

 

É um mínimo seguro para quem está começando...

 

 

Quanto a isso:

 

4 horas atrás, Ieybdcbd Çcldcf disse:

 scanf("%d", &x);

 

Leu o manual? Tem um livro? Seu IDE mostra os parâmetros das funções?

 

SEMPRE teste o retorno de scanf(). Qual o propósito de continuar o programa se não ler nada?

 

int scanf(const char *format, ...)


pois é. Retorna um int que você não testou.
 

if (x <= 0)
{
        printf("Numero invalido \n");
}


E ainda teve a ideia de ver se não veio algo negativo, só que continuou o programa mesmo assim

 

E diz que deu certo. Mas não deu. Sugiro corrigir no mínimo isso

 

 

 

  • Curtir 2
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

12 horas atrás, arfneto disse:

 

Não  "deu certo" porque fez isso ou deixou de fazer isso.

 

E está errado. Levou muitos anos para que isso fosse incorporado '`a linguagem C. Mas foi, e há uns 40 anos atrás. Declare as variáveis de controle do loop DENTRO do for.

 

Em especial uma variável com o nome ingênuo de "i", que pode ser usado linhas depois já que ela declarada como fez vai ficar "viva" por todo o programa. É uma ideia ruim. Bem ruim. E sempre vai cair na sua cabeça.

 

Faça como @AdrianoSiqueira recomendou. Se seu compilador não aceita, use as opções corretas. Isso é dos anos 80, e o tempo passou para todos incluindo C. 

 

Se seu IDE não aceita, mude. Se não sabe como configurar, aprenda. É essencial se quer fazer algo útil programando computadores. Que tal algo simples como:

 


gcc -std=c17 -Wall -Wextra -O3 programa.c

 

É um mínimo seguro para quem está começando...

 

 

Quanto a isso:

 

 

Leu o manual? Tem um livro? Seu IDE mostra os parâmetros das funções?

 

SEMPRE teste o retorno de scanf(). Qual o propósito de continuar o programa se não ler nada?

 


int scanf(const char *format, ...)


pois é. Retorna um int que você não testou.
 


if (x <= 0)
{
        printf("Numero invalido \n");
}


E ainda teve a ideia de ver se não veio algo negativo, só que continuou o programa mesmo assim

 

E diz que deu certo. Mas não deu. Sugiro corrigir no mínimo isso

 

 

 

Obrigado pelas dicas. Como disse estou aprendendo, o exercício pede que calcule o quadrado de 1 a N sendo N digitado pelo usuário e imprima numero invalido se o numero digitado for menor que 1. O resultado deve ser apresentado em coluna como dito no inicio. Estou usando o DEV C,  pois pareceu ser o mais recomendado para linguagem C, confesso que não tenho conhecimento sobre o assunto. Tentei instalar o GCC, consigo baixar o exe, mas na instalação da erro de download. de qualquer forma tenho aprendido com as dicas que recebo aqui. Muito obrigado pela disposição.

14 horas atrás, AdrianoSiqueira disse:

Se estiver usando o CodeBlocks, precisa configurar para ele usar um padrão mais recente, dessa forma poderá declarar variáveis dentro do for.

 

Dê uma olhada:

Estou usando o DEV C, vou ver esse CodeBlocks. Muito obrigado pela disposição e pelas dicas

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

2 horas atrás, Ieybdcbd Çcldcf disse:

Tentei instalar o GCC, consigo baixar o exe, mas na instalação da erro de download

 

Se está usando esse Dev-C++ ou o Code::Blocks quase certamente tem o gcc instalado... Esses IDE --- sim, IDE é singular --- não são compiladores e em geral incluem uma versão meio antiga de gcc. Não precisa necessariamente instalar outra

 

2 horas atrás, Ieybdcbd Çcldcf disse:

Tentei instalar o GCC, consigo baixar o exe, mas na instalação da erro de download

 

Não sei o que pode ser. Erro de download é raro numa coisa tão usada. De que endereço tentou baixar isso? Qual versão tem instalada? Em geral procure por uma pasta chamada MinGW no seu computador e lá tem uma pasta bin onde tem um arquivo gcc.exe que, sem psurpresas, é o compilador...

 

E aí rode gcc -v e verá a versão que tem. Acho que qualquer coisa maior de 7 estará bem. A atual acho que é 10.2

 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

19 horas atrás, arfneto disse:

 

Se está usando esse Dev-C++ ou o Code::Blocks quase certamente tem o gcc instalado... Esses IDE --- sim, IDE é singular --- não são compiladores e em geral incluem uma versão meio antiga de gcc. Não precisa necessariamente instalar outra

 

 

Não sei o que pode ser. Erro de download é raro numa coisa tão usada. De que endereço tentou baixar isso? Qual versão tem instalada? Em geral procure por uma pasta chamada MinGW no seu computador e lá tem uma pasta bin onde tem um arquivo gcc.exe que, sem psurpresas, é o compilador...

 

E aí rode gcc -v e verá a versão que tem. Acho que qualquer coisa maior de 7 estará bem. A atual acho que é 10.2

 

 

Seguindo seu conselho aprendi a configurar o DEV e ele rodou o código que o AdrianoSiqueira tinha sugerido. Novamente agradeço as dicas.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!