Jump to content
Sign in to follow this  
MrTea

Restrictie caractere minuscule!

Recommended Posts

Salut, vreau sa fac un sistem bancomat in C. Vreai ca IBAN-ul sa fie limitat la caractere MAjuscule! Cum fac asta? Am incercat mai jos sa le limitez dar dupa ce citesc sirul de la tastatura nu se intampla nimic! Variabila iban o am asa  char iban[10];

switch(optiune){
		case 1 : {
			printf("\nAveti pe card suma de: %d $ \n", sold);
			break;
		}
		case 2 : {
			printf("\nIntroduceti suma pe care doriti sa o exstageti: \n");
			scanf("%d", &cashout);
			printf("\nAti scos de pe card suma de: %d $", cashout);
			break;
		}
		case 3 : {
			printf("\nIntorudceti IBAN-UL pe care doriti sa faceti transferul\n");
			scanf("%s", &iban);
			if(iban>="a" && iban<="z")	printf("Va rugam introduceti Caractere Majuscule");
			if(iban>="Z" && iban<="Z")	printf ("Ati tastat iban-ul: %s \n", iban);
			break;
		case 4 : {
			printf("\nAti revenit in meniul principal\n");
			break;
		}
		default: printf("Optiune nevalida!");	

 

  • Confused 1

Daca ti-am fost de ajutor la acest topic apeasa pe FhiZsPe.png

Share this post


Link to post
Share on other sites

3 hours ago, MrTea said:

if(iban>="a" && iban<="z") printf("Va rugam introduceti Caractere Majuscule");

if(iban>="Z" && iban<="Z") printf ("Ati tastat iban-ul: %s \n", iban);

Poti explica ce compari aici?

Share this post


Link to post
Share on other sites
10 hours ago, Stefan said:

Poti explica ce compari aici?

Pai am gasit pe net facuta aceasta  comparatir in c++. Incerc sa compar sirul introdus


Daca ti-am fost de ajutor la acest topic apeasa pe FhiZsPe.png

Share this post


Link to post
Share on other sites

Pur si simplu, orice ar introduce utilizatorul transformal in majuscule, ex: 

#include <iostream>
#include <cctype>
#include <stdlib.h>

using namespace std;

int main()
{
	char iban[34], i = 0;
	cin >> iban;
	while (iban[i]) {
		if (isalpha(iban[i])) {
			iban[i] = toupper(iban[i]);
		}
		cout << iban[i];
		i++;
	}
}

N-am mai lucrat de ceva vreme in C/C++ si codu' l-am testat intr-un compiler online ca Visual Studio facea figuri si altceva nu avem la indemana, rezultatul a ceea ce am pus eu mai sus e urmatorul:

Input: fsdfsd32DS
Output: FSDFSD32DS

 

Share this post


Link to post
Share on other sites
On 2/12/2019 at 9:07 AM, MrTea said:

Pai am gasit pe net facuta aceasta  comparatir in c++. Incerc sa compar sirul introdus

Compari iban care in cazul tau este un pointer (adresa in memorie unde se afla stocat sirul tau iban). Adresa care, daca o compari cu 'A' sau 'Z' (si echivalentul in litere mici), mai mult ca sigur nu se afla in acele intervale, de aceea nu se va intampla nimic.

In cazul tau, compari cu "a" / "z" / etc, care reprezinta adrese (const char*) unde sunt stocate acele siruri de caractere (formate dintr-un singur A / Z / a / z). Practic compari 2 pointeri despre care nu stii mai nimic, de aceea are un caracter impredictibil ce ai scris acolo.

Caracterele se reprezinta cu ', sirurile de caractere cu ".

Caracterele se compara separat, caracter cu caracter:

size_t lungime_sir = strlen(iban);
for(size_t i = 0; i < lungime_sir; i++) {
  // sau in stil cum a postat colegul mai sus, for(size_t i = 0; iban[i] != NULL; i++)
  
  // aici compari iban[i] (care reprezinta caracterul din sirul iban de pe pozitia i) cu ce valoare doresti
  // ex:
  if( ! ( ( 'a' <= iban[i] && iban[i] <= 'z' ) || ( '0' <= iban[i] && iban[i] <= '9' ) ) ) {
  	// caracterul iban[i] NU se afla in intervalele ['a', 'z'] sau ['0', '9'], deci nu este litera mica sau cifra
  }
}

 

Share this post


Link to post
Share on other sites
On 2/20/2019 at 2:29 AM, Courage said:

Compari iban care in cazul tau este un pointer (adresa in memorie unde se afla stocat sirul tau iban). Adresa care, daca o compari cu 'A' sau 'Z' (si echivalentul in litere mici), mai mult ca sigur nu se afla in acele intervale, de aceea nu se va intampla nimic.

In cazul tau, compari cu "a" / "z" / etc, care reprezinta adrese (const char*) unde sunt stocate acele siruri de caractere (formate dintr-un singur A / Z / a / z). Practic compari 2 pointeri despre care nu stii mai nimic, de aceea are un caracter impredictibil ce ai scris acolo.

Caracterele se reprezinta cu ', sirurile de caractere cu ".

Caracterele se compara separat, caracter cu caracter:


size_t lungime_sir = strlen(iban);
for(size_t i = 0; i < lungime_sir; i++) {
  // sau in stil cum a postat colegul mai sus, for(size_t i = 0; iban[i] != NULL; i++)
  
  // aici compari iban[i] (care reprezinta caracterul din sirul iban de pe pozitia i) cu ce valoare doresti
  // ex:
  if( ! ( ( 'a' <= iban[i] && iban[i] <= 'z' ) || ( '0' <= iban[i] && iban[i] <= '9' ) ) ) {
  	// caracterul iban[i] NU se afla in intervalele ['a', 'z'] sau ['0', '9'], deci nu este litera mica sau cifra
  }
}

 

Am inteles!  Multumesc frumos!


Daca ti-am fost de ajutor la acest topic apeasa pe FhiZsPe.png

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...