Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1.
- #include <stdio.h>
- #include <math.h>
- #define e 0.0001
- void unesi(char niz[], int velicina)
- {
- char znak = getchar();
- if (znak == '\n') znak = getchar();
- int i = 0;
- while(i < velicina - 1 && znak != '\n') {
- niz[i] = znak;
- i++;
- znak = getchar();
- }
- niz[i]='\0';
- }
- char* nadji_zbir(char *s)
- {
- int predznak = 1, broj = 0;
- int tmp = 0, decimal = 0,brojac = 0;
- char* pom1, *p = s;
- double br1, br2, br3;
- while(*s != '\0') {
- if((*s >= '0' && *s <= '9')||(*s == '-')) {
- broj++;
- if(broj == 1) p = s;
- predznak = 1;
- brojac = 0;
- decimal = 0;
- tmp = 0;
- if(*s == '-') {
- predznak = -1;
- s++;
- }
- while((*s >= '0' && *s <= '9')||(*s == '.')) {
- if(*s == '.') decimal=1;
- else {
- tmp = tmp * 10 + *s - '0';
- if(decimal) brojac++;
- }
- s++;
- }
- if(broj == 1) {
- pom1 = s;
- if(decimal)
- br1 = (tmp*predznak)/pow(10,brojac);
- else br1 = tmp*predznak;
- }
- if(broj == 2) {
- if(decimal)
- br2 = (tmp*predznak)/pow(10,brojac);
- else br2 = tmp*predznak;
- }
- if(broj == 3) {
- broj = 0;
- if(decimal)
- br3 = (tmp*predznak)/pow(10,brojac);
- else br3 = tmp*predznak;
- if(fabs(br1+br2-br3) < e) return p;
- else if(*s == '\0') return NULL;
- else s = pom1;
- }
- }
- s++;
- }
- return NULL;
- }
- void razlike(char* s)
- {
- int predznak = 1, broj = 0;
- int tmp = 0, decimal = 0,brojac = 0;
- char* pom = s;
- double br1 = 0,br2 = 0;
- char* p = nadji_zbir(s);
- if(p == NULL) return;
- while(*p != '\0') {
- if((*p >= '0' && *p <= '9')||(*p == '-')) {
- broj++;
- predznak = 1;
- brojac = 0;
- decimal = 0;
- tmp = 0;
- if(*p == '-') {
- predznak = -1;
- p++;
- }
- while((*p >= '0' && *p <= '9')||(*p == '.')) {
- if(*p == '.') decimal=1;
- else {
- tmp = tmp * 10 + *p - '0';
- if(decimal) brojac++;
- }
- p++;
- }
- if(broj == 1) {
- pom = p;
- if(decimal)
- br1 = (tmp*predznak)/pow(10,brojac);
- else br1 = tmp*predznak;
- }
- if(broj == 2) {
- if(decimal)
- br2 = (tmp*predznak)/pow(10,brojac);
- else br2 = tmp*predznak;
- broj = 0;
- printf("%g - %g = %g\n",br1,br2,br1-br2);
- p = nadji_zbir(pom);
- if(p == NULL) return;
- else p--;
- }
- }
- p++;
- }
- return;
- }
- int main()
- {
- char tekst[1000];
- printf("Unos:\n");
- unesi(tekst,1000);
- razlike(tekst);
- return 0;
- }
- 2.
- #include <stdio.h>
- #include <string.h>
- void unesi(char niz[], int velicina)
- {
- char znak = getchar();
- if (znak == '\n') znak = getchar();
- int i = 0;
- while(i < velicina - 1 && znak != '\n') {
- niz[i] = znak;
- i++;
- znak = getchar();
- }
- niz[i]='\0';
- }
- void slova(char *s1, char *s2)
- {
- while(*s1 != '\0') {
- if(*s1>='A' && *s1<='Z')
- *s1 = *s1 + 32;
- s1++;
- }
- while(*s2 != '\0') {
- if(*s2>='A' && *s2<='Z')
- *s2 = *s2 + 32;
- s2++;
- }
- }
- int provjera(char s1[], char s2[], int i)
- {
- int k,l,error = 0;
- char c;
- int br1 = 0, br2 = 0;
- for(k = 0; k < i; k++) {
- slova(s1,s2);
- c = s1[k];
- for(l = 0; l < i; l++) {
- if(s1[l] == c) br1++;
- if(s2[l] == c) br2++;
- }
- if(br1 != br2) {
- error = 1;
- break;
- } else {
- br1 = 0;
- br2 = 0;
- }
- }
- if(error) return 1;
- return 0;
- }
- char* izbaci_anagrame(char *s1, char *s2)
- {
- char *p, *q, *pom1, *pom2, *string1, *string2 = s2;
- p = q = pom1 = string1 = s1;
- char rijec[10001] = "",anagram[10001] = "";
- int i = 0, j = 0, gasi_prvu = 0, gasi_drugu = 0;
- while(1) {
- if(gasi_prvu) break;
- if(!((*string2 >= 'a' && *string2 <= 'z')||(*string2 >= 'A' && *string2 <= 'Z')) || *string2 == '\0') {
- if(i == 0) {
- if(*string2 == '\0') gasi_prvu = 1;
- string2++;
- continue;
- }
- rijec[i] = '\0';
- while(1) {
- if(gasi_drugu) {
- gasi_drugu = 0;
- break;
- }
- if(!((*string1 >= 'a' && *string1 <= 'z')||(*string1 >= 'A' && *string1 <= 'Z')) || *string1 == '\0') {
- if(j == 0) {
- if(*string1 == '\0') gasi_drugu = 1;
- string1++;
- continue;
- }
- anagram[j] = '\0';
- q = string1;
- if(i != j) {
- pom1 = q;
- pom2 = q;
- } else {
- if(provjera(rijec,anagram,i) == 0) {
- pom2 = pom1;
- while(*pom1++ = *q++);
- if(*p == '\0') break;
- pom1 = pom2;
- string1 = pom2;
- }
- }
- j=0;
- } else {
- anagram[j] = *string1;
- j++;
- }
- if(*string1 == '\0') break;
- string1++;
- }
- string1 = p;
- pom1 = p;
- pom2 = p;
- i=0;
- } else {
- rijec[i] = *string2;
- i++;
- }
- if(*string2 == '\0') break;
- string2++;
- }
- return p;
- }
- int main()
- {
- char string1[10001], string2[10001];
- printf("Unesite prvi string:");
- unesi(string1,10001);
- printf("Unesite drugi string:");
- unesi(string2,10001);
- printf("'%s'", izbaci_anagrame(string1, string2));
- return 0;
- }
- 3.
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
- void unesi(char niz[], int velicina)
- {
- char znak = getchar();
- if (znak == '\n') znak = getchar();
- int i = 0;
- while(i < velicina - 1 && znak != '\n') {
- niz[i] = znak;
- i++;
- znak = getchar();
- }
- niz[i]='\0';
- }
- void slova(char *s1, char *s2)
- {
- while(*s1 != '\0') {
- if(*s1>='A' && *s1<='Z')
- *s1 = *s1 + 32;
- s1++;
- }
- while(*s2 != '\0') {
- if(*s2>='A' && *s2<='Z')
- *s2 = *s2 + 32;
- s2++;
- }
- }
- int samoglasnik(char s)
- {
- if(s == 'a' || s == 'e' || s == 'i' || s == 'o' || s == 'u' || s == 'A' || s == 'E' || s == 'I' || s == 'O' || s == 'U')
- return 1;
- return 0;
- }
- void max_slog(char *s1, char *s2)
- {
- char *p = s1, *q = s1;
- char *pom1, *pom2;
- char slog[10001] = "",slogovi[10001] = "",max[10001] = "";
- int i = 0, j = 0, k = 0, br = 0, pronadjen = 0,maxbr = 0, provjera = 0, error = 0, duzina = 0, najduzi = 0;
- while(*p != '\0') {
- if((*p >= 'a' && *p<= 'z')||(*p >= 'A' && *p<= 'Z')) {
- slog[i] = *p;
- i++;
- if(samoglasnik(*p)) {
- slog[i] = '\0';
- pronadjen = 1;
- }
- }
- if(!((*p >= 'a' && *p <= 'z')||(*p >= 'A' && *p <= 'Z')) || *p == '\0') {
- if(i == 0) {
- p++;
- continue;
- }
- slog[i] = '\0';
- pronadjen = 1;
- }
- if(pronadjen) {
- duzina = i;
- while(*q != '\0') {
- if((*q >= 'a' && *q<= 'z')||(*q >= 'A' && *q<= 'Z')) {
- slogovi[j] = *q;
- j++;
- if(samoglasnik(*q)) {
- slogovi[j] = '\0';
- provjera = 1;
- }
- }
- if(!((*q >= 'a' && *q <= 'z')||(*q >= 'A' && *q <= 'Z')) || *q == '\0') {
- if(j == 0) {
- q++;
- continue;
- }
- slogovi[j] = '\0';
- provjera = 1;
- }
- if(provjera) {
- slova(slog,slogovi);
- if(duzina != j) {
- q++;
- j = 0;
- provjera = 0;
- continue;
- } else {
- for(k = 0; k < duzina; k++) {
- if(slog[k] == slogovi[k]) continue;
- else {
- error = 1;
- break;
- }
- }
- }
- if(error) error = 0;
- else br++;
- j = 0;
- provjera = 0;
- }
- q++;
- }
- if(br > maxbr) {
- najduzi = duzina;
- maxbr = br;
- pom1 = max;
- pom2 = slog;
- while(*pom1++ = *pom2++);
- } else if(br == maxbr) {
- if(duzina > najduzi) {
- najduzi = duzina;
- pom1 = max;
- pom2 = slog;
- while(*pom1++ = *pom2++);
- }
- }
- br = 0;
- i = 0;
- pronadjen = 0;
- q = s1;
- }
- p++;
- }
- char* pom = max;
- char* upis = s2;
- while(*upis++ = *pom++);
- }
- int main()
- {
- char tekst[10001] = "";
- char slog[10001] = "";
- printf("Unesite tekst:");
- unesi(tekst,10001);
- max_slog(tekst, slog);
- printf("'%s'", slog);
- return 0;
- }
- 4.
- #include <stdio.h>
- #include <math.h>
- void unesi(char niz[], int velicina)
- {
- char znak = getchar();
- if (znak == '\n') znak = getchar();
- int i = 0;
- while(i < velicina - 1 && znak != '\n') {
- niz[i] = znak;
- i++;
- znak = getchar();
- }
- niz[i]='\0';
- }
- int izracunaj(char *s, int *ok)
- {
- char *provjera = s, *operandi = s,*p = s;
- int predznak = 1, brojac = 0, tmp, j = 0, i = 0, k = 0,l;
- char operacija[100] = "";
- int brojevi[101];
- int temp = 0;
- *ok = 1;
- while(*provjera != '\0') {
- if(!(*provjera >= '0' && *provjera <= '9') && *provjera != '+' && *provjera != '-'
- && *provjera != '*' && *provjera != '/' && *provjera != '^') {
- *ok = 0;
- break;
- }
- if(provjera == s && !(*provjera >= '0' && *provjera <= '9')) {
- if(*provjera == '-') {
- provjera++;
- if(*provjera == '-') {
- *ok = 0;
- break;
- }
- } else {
- *ok = 0;
- break;
- }
- }
- while(*provjera >= '0' && *provjera <= '9') provjera++;
- if(*provjera == '+' || *provjera == '-' || *provjera == '*' || *provjera == '/' || *provjera == '^') {
- provjera++;
- if(*provjera == '-') {
- provjera++;
- if(!(*provjera >= '0' && *provjera <= '9')) {
- *ok = 0;
- break;
- }
- }
- if(*provjera == '+' || *provjera == '*' || *provjera == '/' || *provjera == '^' || *provjera == '\0') {
- *ok = 0;
- break;
- }
- }
- if(*provjera == '\0') break;
- provjera++;
- }
- while(*s != '\0') {
- if((*s >= '0' && *s <= '9')||(*s == '-')) {
- if(*s == '-') {
- if(s == p)
- predznak = -1;
- else if(*(s-1) >= '0' && *(s-1) <= '9')
- predznak = 1;
- else
- predznak = -1;
- } else if(*s >= '0' && *s <= '9') {
- tmp = 0;
- while(*s >= '0' && *s <= '9') {
- tmp = tmp * 10 + *s - '0';
- s++;
- }
- brojevi[j] = tmp*predznak;
- predznak = 1;
- brojac++;
- j++;
- s--;
- }
- }
- s++;
- }
- if(!*ok) {
- return brojevi[0];
- } else {
- while(*operandi != '\0') {
- if(operandi == p && *operandi == '-') {
- operandi++;
- continue;
- }
- if(!(*operandi >= '0' && *operandi <= '9')) {
- operandi++;
- if(*operandi == '-') {
- operacija[i] = *(operandi-1);
- operandi++;
- } else
- operacija[i] = *(operandi-1);
- i++;
- }
- operandi++;
- }
- operacija[i] = '\0';
- operandi = operacija;
- while(*operandi != '\0') {
- while(*operandi != '^' && *operandi != '\0') {
- k++;
- operandi++;
- }
- if(*operandi == '\0') {
- operandi = operacija;
- k = 0;
- break;
- } else {
- temp = (int)pow(brojevi[k],brojevi[k+1]);
- brojevi[k] = temp;
- for(l = k+1; l < brojac; l++) {
- brojevi[l] = brojevi[l+1];
- }
- brojac--;
- while(*operandi != '\0') {
- *operandi = *(operandi+1);
- if(*operandi == '\0') break;
- operandi++;
- }
- i--;
- operandi = operacija;
- k = 0;
- }
- }
- while(*operandi != '\0') {
- while(*operandi != '*' && *operandi != '/' && *operandi != '\0') {
- k++;
- operandi++;
- }
- if(*operandi == '\0') {
- operandi = operacija;
- k = 0;
- break;
- } else {
- if(*operandi == '*')
- temp = brojevi[k] * brojevi[k+1];
- else{
- if(brojevi[k+1] == 0){
- *ok = 0;
- return brojevi[0];
- }else
- temp = brojevi[k] / brojevi[k+1];
- }
- brojevi[k] = temp;
- for(l = k+1; l < brojac; l++) {
- brojevi[l] = brojevi[l+1];
- }
- brojac--;
- while(*operandi != '\0') {
- *operandi = *(operandi+1);
- if(*operandi == '\0') break;
- operandi++;
- }
- i--;
- operandi = operacija;
- k = 0;
- }
- }
- while(*operandi != '\0') {
- while(*operandi != '+' && *operandi != '-' && *operandi != '\0') {
- k++;
- operandi++;
- }
- if(*operandi == '\0') {
- operandi = operacija;
- k = 0;
- break;
- } else {
- if(*operandi == '+')
- temp = brojevi[k] + brojevi[k+1];
- else
- temp = brojevi[k] - brojevi[k+1];
- brojevi[k] = temp;
- for(l = k+1; l < brojac; l++) {
- brojevi[l] = brojevi[l+1];
- }
- brojac--;
- while(*operandi != '\0') {
- *operandi = *(operandi+1);
- if(*operandi == '\0') break;
- operandi++;
- }
- i--;
- operandi = operacija;
- k = 0;
- }
- }
- }
- return brojevi[0];
- }
- int main()
- {
- char string[500];
- int ok, rez;
- printf("Unesite matematički izraz za proračun:(dozovoljene računske operacije:'+','-','*','/','^')\n");
- unesi(string,500);
- rez = izracunaj(string, &ok);
- printf("Rezultat: %d Prijava greške: %d", rez, ok);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement