2025(e)ko martxoaren 28(a), ostirala

Ariketa 56 | Majuskulak eta minuskulak

ZER DAKIDAN:
Arrayak eta kateak ezagutzen ditut.



ZER IKASIKO DUDAN:
Arrayen ariketa bat egingo dut.

Teklatuaren bidez sartutako esaldia karaktereka aztertu aldaketa hauek eginez:

  • Letra bokala bada, majuskuletara igaro
  • Bokala ez den letra bada, minuskuletara igaro
  • Gainerako karaktereak ez aldatu

Esaldi bat fgets() bitartez irakurri ondoren (noski, azken lerro-berri karakterea kendu beharko da), esaldiko karaktere guztiak banan-banan arakatu zein aldaketa aplikatuko zaion erabakia hartuz.

/* Ariketa-56_LarriakXeheak: kate bat emanik bokalak majuskuletan eta
                             eta gainerako letrak minuskuletan jarri. */

// Datua fgets() bitartez irakurri ondoren, azken INTRO karakterea kendu beharko da.
// Ariketaren funtsa katea karaktereka prozesatzean dago.

#include <stdio.h>
#include <string.h>    // strcspn() eta strlen() funtzioetarako
#include <ctype.h>     // toupper() eta tolower() funtzioetarako
#include <stdbool.h>   // bool datu-motarako

bool fnboBokalaDa(char letra);

int main()
{
    char sEsaldia[21];  // gehienez 20 karakteredun katea (+1 posizio bat '\0' mugatzailerako)
    int i;

    printf("\n//////////////////////////////////////\n\n");
    printf("sEsaldia eman: ");
    fgets(sEsaldia, sizeof(sEsaldia), stdin);    // katea irakurri bere neurria zainduz
    //sEsaldia[strcspn(sEsaldia, "\n")] = '\0';  // Enter karakterea kendu
    sEsaldia[strlen(sEsaldia)-1] = '\0';         // Enter karakterea kentzeko

    printf("\n");
    printf("---|01234567890123456789|--- gehienez 20\n");
    printf("===|%s|===\n", sEsaldia);

    // kate osoa prozesatu karaktereka
    for (i = 0; i < strlen(sEsaldia); i++)
    {
        if (fnboBokalaDa(sEsaldia[i]))
        {
            sEsaldia[i] = toupper(sEsaldia[i]);  // bokal bada majuskuletan jarri
        } else {
            sEsaldia[i] = tolower(sEsaldia[i]);  // ez bada bokal minuskuletan jarri
        }
    }

    printf("===|%s|===\n", sEsaldia);
    printf("\n//////////////////////////////////////\n\n");

    return 0;
}


// Karaktere bat bokal ote den aztertzen duen funtzioa
bool fnboBokalaDa(char letra)
{
    switch (tolower(letra))
    {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            return true;   // bokala da
        default:
            return false;  // ez da bokala
    }
}






  • Ariketa-56_LarriakXeheak.cbp | main.c  


 

iruzkinik ez:

Argitaratu iruzkina