Ir ao conteúdo

Posts recomendados

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

Postado

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

Já te falei sobre esse erro. . .

Postado

@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 

Postado

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 ?

 

 

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!