Ir ao conteúdo
  • Cadastre-se

C Problema A expressão deve possuir um valor constante


Ir à solução Resolvido por Flávio Pedroza,

Posts recomendados

Postado

Estou tendo um erro no meu codigo, acredito que seja um problema nessa parte, com as variaveis m e n, porém não sei como substitui-las corretamente.

char matriz[m][n];

o codigo inteiro:

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<locale.h>
#include<ctype.h>
#include<string.h>

int primeiroch(char ch) 
{
	if(islower(ch))
	{
		printf("\n Minúsculo %i x 2\n", ch);
		return ch * 2;
	}
	else if (isupper(ch)) 
	{
		printf("\nMaiúsculo %i /10\n", ch);
		return ch / 10;
	}
	else
	{
		printf("\nNão é uma letra %i x 2 \n", ch);
		return ch * 2;
	}

}

int main()
{
	setlocale(LC_ALL, "Portuguese");
	int m = 0;
	int n = 0;
	while (!(m >= 1 && m <= 10))
	{
		printf("Digite o valor de M ");
		scanf_s("%i", &m);
		fflush(stdin);
	}
	while (!(n >= 1 && n <= 10))
	{
		printf("Digite o valor de N");
		scanf_s("%i", &n);
		fflush(stdin);
	}
	printf("Matriz será MxN %ix%i\n", m, n);
	char matriz[m][n];
	char contar[100];
	int i = 0;
	int j = 0;
	int l = 0;

	char ch;
	int count_t = 0;

	for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
		{
			printf("\nPreencha %ix%i", (i + 1), (j + 1));
			scanf_s("%c", &ch);
			matriz[i][j] = ch;
			contar[count_t] = ch;
			count_t++;
			fflush(stdin);
		}
	}
	printf("Matriz\n");
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < m; j++)
		{
			printf("%c", matriz[i][j]);
		}
		printf("\n");
	}
	printf("\n\n");
	char contar2[100];
	strcpy_s(contar2, "");
	for (l = 0; l < count_t; l++)
	{
		bool ver = false;
		int count_ch = 0;
		char chv[2];
		chv[0] = contar[1];
		chv[0] = tolower(chv[0]);
		for (i = 0; i < m; i++)
		{
			for (j = 0; j < n; j++)
			{
				if (chv[0] == tolower(matriz[i][j]) && ((strchr(contar2, chv[0])) == NULL))
				{
					count_ch++;
					ver = true;
				}
			}
		}
		strcat_s(contar2, chv);
		if (ver) {
			printf("%c foi encontrado %i na matriz\n", chv[0], count_ch);
		}
	}
	printf("\nO total de caracteres da matriz é: %i\n", count_t);
	int re = primeiroch(matriz[0][0]);
	printf("\nResultado:%i%c\n", re, re);
	system("pause");
	return 0;
}

 

Postado
//char matriz[m][n];
char** matriz = (char**)malloc(m*sizeof(char));
(...)
 
	for (i = 0; i < m; i++)
	{
        matriz[i] = (char *)malloc(n*sizeof(char));
		for (j = 0; j < n; j++)
		{
			printf("\nPreencha %ix%i", (i + 1), (j + 1));
			scanf_s("%c", &ch);
			matriz[i][j] = ch;
			contar[count_t] = ch;
			count_t++;
			fflush(stdin);
		}
	}

OBS.: Chamar "free" no final do programa.

	for (i = 0; i < m; i++) free(matriz[i]);
	free(matriz);

 

  • Curtir 1
  • Solução
Postado

Isso é porque o "enter" fica no buffer.

for (j = 0; j < n; j++)
		{
			printf("\nPreencha %ix%i", (i + 1), (j + 1));
			scanf_s("%c", &ch);
            getchar(); //remove o "enter" do buffer
			matriz[i][j] = ch;
			contar[count_t] = ch;
			count_t++;
			fflush(stdin);
		}

 

  • Obrigado 1

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