Code:
#include <stdio.h> // Za printf
#include <stdlib.h> // Za malloc, free...
#include <string.h> // Za strlen
#define BUFF_LEN 1024 // Maximalna duzina linije koju korisnik upisuje
#define ABC_LEN 26 // Broj slova u engleskoj abecedi
int main(int argc, char *argv[])
{
int i;
/*
** Linija koju upisuje korisnik
*/
char *line;
/*
** Sadrzi broj unetih slova
*/
int *abc;
line = malloc(sizeof(char) * BUFF_LEN);
abc = malloc(sizeof(int) * ABC_LEN);
/*
** U pocetku, nemamo nijedno slovo, znaci, abc je zvugde jednak nuli
*/
memset(abc, 0, sizeof(int) * ABC_LEN);
/*
** Citamo liniju
*/
read(0, line, BUFF_LEN);
/*
** Gledamo celu liniju
*/
for(i = 0; i < strlen(line); i++)
{
/*
** Ako je malo slovo, stavim ga u veliko
*/
if(line[i] >= 97 && line[i] <= 122)
{
line[i] = line[i] - 32;
}
/* Ako je karakter slovo, inkrementiram abc[line[i] - 65]
** na primer, ako je slovo A = 65 (ascii), onda abc[65 - 65]++
** znaci, abc[0] = 1 itd.
*/
if(line[i] >= 65 && line[i] <= 90)
{
abc[line[i] - 65]++;
}
}
/*
** Gledamo prvo da li imamo sva slova abecede
*/
for(i = 0; i < ABC_LEN; i++)
{
if(abc[i] != 1)
break;
}
/*
** Ako ima, BRAVO, i bezimo
*/
if(i == ABC_LEN)
{
printf("BRAVO!\n");
free(abc);
free(line);
exit(0);
}
/* Ako je abc[i] == 1, znaci da smo uneli samo jednom neko slovo,
** izbacujemo malo slovo, ako abc[i] != 1, onda izbacujemo veliko slovo
*/
for(i = 0; i < ABC_LEN; i++)
{
if(abc[i] == 1)
{
printf("%c", i + 97);
}
else
{
printf("%c", i + 65);
}
}
printf("\n");
free(abc);
free(line);
return(0);
}
Nisam uopste gledao moguce greske malloc-a ili read-a, to tebi ostavljam.
A ti sedi i uci da programiras. Imao si srece ovog puta sto mi se ne uci pas trazim izgovore da ne pocnem da ucim.
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart