summaryrefslogtreecommitdiffstats
path: root/inf/rtk/2021-državno/1/prog.c
blob: 30b2924c77c18d55df6ff4ad129263a8787cc335 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h> /* tolower */
#include <string.h> /* memmove */
int MoznaGesla(char * g) {
	int l = strlen(g); /* za boljšo efektivnost najprej dobimo dolžino niza in jo shranimo, saj je konstantna */
	for (int i = 0; i <= l; i++) { /* pred katerim znakom naj bo pika */
		for (int j = 0; j < l; j++) { /* katera črka prvotnega gesla naj bo velika */
			if (g[j] >= '0' && g[j] <= '9') /* številka ne more biti velika ali majhna, zato ta primer */
				continue; /* izpustimo */
			char * buf = malloc(l+1); /* naredimo buffer za niz, ki ga bomo natisnili */
			strcpy(buf, g); /* skopiramo notri začetno geslo */
			buf[j] = toupper(buf[j]); /* tole je bolj samoumevno, kakor če bi prišteli obskurno ascii vrednost */
			char * pika = buf+i; /* kje naj bo pika */
			memmove(pika+1, pika, (l+1)-i); /* umaknemo znake od in vključno z znakom, kjer bo pika, en znak v desno */
			pika[0] = '.'; /* napišemo piko */
			fprintf(stdout, "%s\n", buf); /* natisnemo niz */
			free(buf); /* sprostimo buffer */
		}
	}
	return 1; /* vrnemo se iz podprograma, po želji zamenjaj z while(1); če se bojiš vračanja iz podprogramov */
}
int main (int argc, char ** argv) {
	if (argc < 1+1) {
		fprintf(stderr, "uporaba: %s <začetno geslo za epl ajdi>\n", argv[0]);
		return 1;
	}
	MoznaGesla(argv[1]); /* glavna funkcija samo pokliče podprogram in kot parameter da prvi argument, začetno geslo za epl ajdi  */
	return 0;
}