ekufrin / tvz_c-2023

Zadaci za vjezbu i labosi sa gradera - 2023 god.
7 stars 6 forks source link

Kolokvij 2 - Zadatak 1 - ASCII maker - 12 bodova #97

Closed sstanic01 closed 8 months ago

sstanic01 commented 8 months ago

Kolokvij 2 Zadatak 1 - ASCII maker.pdf

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define MAX 100

void maxASCII(char* recenica);

int main() {

    char recenica[MAX] = { 0 };

    scanf("%[^.]*c", recenica);
    recenica[strlen(recenica)] = '.';

    maxASCII(recenica);

    return 0;
}

void maxASCII(char* recenica) {
    int maxSuma = 0, j = 0, suma = 0;
    char rijec[MAX] = { 0 }, maxRijec[MAX] = { 0 };
    for (int i = 0; i < strlen(recenica); i++) {
        if (recenica[i] != ' ' && recenica[i] != '\n' && recenica[i] != '.') {
            rijec[j] = recenica[i];
            suma += (int)recenica[i];
            j++;
        }
        else {
            if (suma > maxSuma) {
                maxSuma = suma;
                strcpy(maxRijec, rijec);
            }
            else if (suma == maxSuma) {
                for (int k = 0; k < strlen(maxRijec); k++) {
                    if ((int)tolower(rijec[i]) < (int)tolower(maxRijec[i])) {
                        maxSuma = suma;
                        strcpy(maxRijec, rijec);
                        break;
                    }
                    else if ((int)tolower(rijec[i]) < (int)tolower(maxRijec[i])) {
                        break;
                    }
                }
            }
            rijec[0] = '\0';
            j = 0;
            suma = 0;
        }
    }

    printf("%s: %d", maxRijec, maxSuma);
}
ekufrin commented 8 months ago

Dodano, zahvaljujem.

ekufrin commented 8 months ago

Jedan kolega je ukazao na jednu grešku u kodu, to jest, višak. Ovaj drugi else if ima isti uvjet kao i prvi, pa je bespotreban. Maknuti ću ga iz koda.

if ((int)tolower(rijec[i]) < (int)tolower(maxRijec[i])) { maxSuma = suma; strcpy(maxRijec, rijec); break; } else if ((int)tolower(rijec[i]) < (int)tolower(maxRijec[i])) { break; }

sstanic01 commented 8 months ago

ispricavam se, ovaj drugi else if bi trebao bit: else if ((int)tolower(rijec[i]) > (int)tolower(maxRijec[i])) { break; }

ekufrin commented 8 months ago

Aha, uredu. Budem onda popravio. Hvala