Ir ao conteúdo
  • Cadastre-se

C Exceção gerada em 0x7B5398F1 (ucrtbased.dll) em TrabalhoMatriz.exe: 0xC0000005:


Daniel Pio

Posts recomendados

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


int primeiroch(char ch) {
	if (islower(ch)) {
		printf("\nMinusculo %i X 2\n", ch);
		return ch * 2;
	}
	else if (isupper(ch)) {
		printf("\nMaiusculo %i / 10\n", ch);
		return ch / 10;
	}
	else {
		printf("\não é uma letro %i X 2\n", ch);
		return ch * 2;
	}
}
int main()
{
	setlocale(LC_ALL, "");
	int m = 0;
	int n = 0;
	while (!(m >= 1 && m <= 10)) {
		system("cls");
		printf("Entre com o valor de M para criar a matriz: ");
		scanf_s("%i", &m);
		fflush(stdin);
	}
	while (!(n >= 1 && n <= 10)) {
		system("cls");
		printf("Entre com o valor de N para criar a matriz: ");
		scanf_s("%i", &n);
		fflush(stdin);
	}
	printf("Matriz criada M x N = %i x %i\n", m, n);
	int i = 1;
	int j = 1;
	int l = 0;
	char matriz[10][100];
	char contar[100];
	
	char ch = ' ';
	int count_t = 0;
	for (i = 0; i < m; i++) {
		for (i = 0; i < m; i++) {
			
			printf("\nPreencha %i x %i com algum caractere", (i), (j));
			scanf_s("%s",ch);
			ch = matriz[i][j];
			ch = contar[count_t];
			count_t++;
			fflush(stdin);
		}
		printf("\n");
	}
	printf("\n\n");
	char contar2[100];
	strcpy_s(contar2, 0, ' ');
	for (l = 0; l < contar2; 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 < m; j++) {
				if (chv[0] == tolower(matriz[i][j]) && ((strchr(contar2, chv[0])) == NULL)) {
					count_ch++;
					ver = true;
				}
			}
		}
		strcat_s(contar2, 0, chv);
		if (ver) {
			printf("%c foi encontrado %i na matriz\n", chv[0], count_ch);
		}
	}
	printf("\N O 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;
	}

Alguém pode me ajudar a descobrir onde estou errando?

Link para o comentário
Compartilhar em outros sites

Seu programa tem muitos erros de lógica e, por favor não me leve a mal, falta de conhecimento da linguagem. Por exemplo

char matriz[10][100];
	char contar[100];
	
	char ch = ' ';
	int count_t = 0;
	for (i = 0; i < n - 1; i++) { //o indice da matriz vai ate 9
	//for (i = 0; i < m; i++) {
		///for (i = 0; i < m; i++) { acredito que seja j
        count_t = 0; //zerar o contador para nao haver estouro do indice
		for (j = 0; j < m - 1; j++) {	//indice vai ae 99		
			printf("\nPreencha %i x %i com algum caractere", (i), (j));
			scanf_s("%s",ch);
			//ch = matriz[i][j];
            matriz[i][j] = ch;
			//ch = contar[count_t];
            contar[count_t] = ch;
			count_t++; 
			fflush(stdin);
		}
		printf("\n");
	}

Aqui também:

char contar2[100];
	strcpy_s(contar2, 0, ' ');
	for (l = 0; l < contar2; l++) { //contar2 é uma matriz de char, nao pode comparar com l que eh inteiro

Eu sugiro que volte ao básico e tente fazer algo simples para estudar e melhor entender arrays em c.

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

@arfneto Agora creio que está quase perfeito..

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


int primeiroch(char ch) {
	if (islower(ch)) {
		printf("\nMinusculo %i X 2\n", ch);
		return ch * 2;
	}
	else if (isupper(ch)) {
		printf("\nMaiusculo %i / 10\n", ch);
		return ch / 10;
	}
	else {
		printf("\não é uma letra %i X 2\n", ch);
		return ch * 2;
	}
}
int main()
{
	setlocale(LC_ALL, "");
	int m = 0;
	int n = 0;
	while (!(m >= 1 && m <= 10)) {
		system("cls");
		printf("Entre com o valor de M para criar a matriz: ");
		scanf_s("%i", &m);
	}
	while (!(n >= 1 && n <= 10)) {
		system("cls");
		printf("Entre com o valor de N para criar a matriz: ");
		scanf_s("%i", &n);
	}
	printf("Matriz criada M x N = %i x %i\n", m, n);

	int i = 1;
	int j = 1;
	int l = 0;
	char matriz[10][100];
	char contar[100];
	char chv[2];
	char ch = ' ';
	int count_t = 0;
	for (i = 0; i < m; i++) {
		for (i = 0; i < m; i++) {

			printf("\nPreencha %i x %i com algum caractere", (i + l), (j + l));
			fgets(chv, 10, stdin);
			matriz[i][j] = chv;
			contar[count_t] = chv;
			count_t++;
		}
		printf("\n");
	}
	printf("\n\n");
	char contar2[100];
	strcpy_s(contar2, 10, NULL);
	for (l = 0; l < contar2; 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 < m; j++) {
				if (chv[0] == tolower(matriz[i][j]) && ((strchr(contar2, chv[0])) == ' ')) {
					count_ch++;
					ver = true;
				}
			}
		}
		strcat_s(contar2, 10, chv);
		if (ver) {
			printf("%c foi encontrado %i na matriz\n", chv[0], count_ch);
		}
	}
	printf("\N O 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;

}
	

Algo que possa estar errando ai?

Certo que sim está me retornando 

Link para o comentário
Compartilhar em outros sites

image.png.f797ff1fa7b9a934441bf94618718eb0.png

 

De novo?

De novo?

 

fgets() espera o que? chv é o que? stdin é um fluxo de saída?

 

E a documentação? 
 

image.png.2a34b11117db2cba3eec11cca5dd6843.png

 

E Visual Studio mostrando na sua tela
 

image.png.21f03c03d16f06bdf0a1f6e0de404bab.png

 

E mesmo assim você passou errado?

 

chv é char. E você mudou, porque era char[2] antes. Não pode passar char para fgets(). Está escrito lá. E não faz sentido. chv é constante. Um char.

 

E onde arrumou o 10? Acha mesmo que vai poder ler até 10 bytes em um char, onde cabe.... UM ?

 

 

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