Jump to content

Recommended Posts

Posted

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

Posted
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?

Posted
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

Posted

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

 

  • Moderators
Posted
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
  }
}

 

  • 1 month later...
Posted
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

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.