Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mohloko

[Resolvido] Error int[int] for array subscript

Recommended Posts

Olá pessoal, preciso entregar um trabalho em c ainda hoje e estou tendo bastante dificultade nisso, fiz uma pesquisa no forum e não encontrei nada relacionado, se puderem ajudar agradecço desde já!

Está dando erro nas linhas 13, 17 e 24 (error invalid types 'int[int]' for array subscript) alguém pode explicar isso?

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

int main()
{
 int n[8], multi2, dois, i, tres, multi3;
 dois=0;
 tres=0;
 for (i=0; i<8; i++) {
 printf("Digite um numero");
 scanf("%d", &n[i]);
 if (n[i] % 2 ==0) {
//erro aqui
 multi2[dois] = n[i];
 dois++;
 }
 else if (n[i] % 3 ==0) {
//erro aqui
 multi3[tres] = n[i];
 tres++;
 
 }
 //erro aqui
 printf("Multiplo de 2\n");
 for (i=0;i<dois;i++) {
	printf("%d\n", multi2[i]);	
 }
}
}

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem 2 problemas no seu código:

 

1. Você está utilizando como matriz, uma não matriz:

 

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

#define MAX 8

int main(){
 	int i, n;
 	int multi2[ MAX ], multi3[ MAX ];
 	int dois = 0;
 	int tres = 0;

 	for ( i = 0 ; i < MAX ; ++i ){
 	 	printf( "Digite um número %d/%d: " , i + 1 , MAX );
 	 	scanf( "%d" , &n );

 	 	if ( n % 2 == 0 ) multi2[ dois++ ] = n;
 	 	if ( n % 3 == 0 ) multi3[ tres++ ] = n;
 	}
}

2. Você tem um loop dentro do principal que também utiliza a variável i para iterar a matriz, você deve ou trocar a variável utilizada para iterar ou colocar o segundo loop fora do principal:

 

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

#define MAX 8

int main(){
 	int i, n;
 	int multi2[ MAX ], multi3[ MAX ];
 	int dois = 0;
 	int tres = 0;

 	for ( i = 0 ; i < MAX ; ++i ){
 	 	printf( "Digite um número %d/%d: " , i + 1 , MAX );
 	 	scanf( "%d" , &n );

 	 	if ( n % 2 == 0 ) multi2[ dois++ ] = n;
 	 	if ( n % 3 == 0 ) multi3[ tres++ ] = n;
 	}

 	printf( "Multiplos de 2: \n" );
 	for ( i = 0 ; i < dois ; ++i ) printf( "\t%d\n" , multi2[ i ] );

 	printf( "Multiplos de 3: \n" );
 	for ( i = 0 ; i < tres ; ++i ) printf( "\t%d\n" , multi3[ i ] );
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado João pela solução! Deu pra aprender mais com seu código, que também ficou bem mais elegante! =]

Vou treinar mais um pouco aqui. E pesquisar sobre esses erros.

Desculpa pelo post incorreto, vou ler as regras antes de postar qualquer coisa!

PS: Não conssegui editar o tópico pra colocar [Resolvido]

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem é que só moderadores podem alterar para resolvido

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.