Ir ao conteúdo

C # cod C o quadrado de 1 a N


Ir à solução Resolvido por AdrianoSiqueira,

Posts recomendados

Postado
#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
  • Solução
Postado

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
Postado
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? 

Postado
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;
}

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

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!