first commit
This commit is contained in:
commit
52aa11d04e
4
.depend
Normal file
4
.depend
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
main.o: src/main.c src/scanFile.h src/myString.h
|
||||||
|
myAlphabet.o: src/myAlphabet.c src/myAlphabet.h src/myString.h
|
||||||
|
myString.o: src/myString.c src/myString.h
|
||||||
|
scanFile.o: src/scanFile.c src/scanFile.h src/myString.h src/myAlphabet.h
|
54
.gitignore
vendored
Normal file
54
.gitignore
vendored
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# ---> C
|
||||||
|
# Prerequisites
|
||||||
|
*.d
|
||||||
|
|
||||||
|
# Object files
|
||||||
|
*.o
|
||||||
|
*.ko
|
||||||
|
*.obj
|
||||||
|
*.elf
|
||||||
|
|
||||||
|
# Linker output
|
||||||
|
*.ilk
|
||||||
|
*.map
|
||||||
|
*.exp
|
||||||
|
|
||||||
|
# Precompiled Headers
|
||||||
|
*.gch
|
||||||
|
*.pch
|
||||||
|
|
||||||
|
# Libraries
|
||||||
|
*.lib
|
||||||
|
*.a
|
||||||
|
*.la
|
||||||
|
*.lo
|
||||||
|
|
||||||
|
# Shared objects (inc. Windows DLLs)
|
||||||
|
*.dll
|
||||||
|
*.so
|
||||||
|
*.so.*
|
||||||
|
*.dylib
|
||||||
|
|
||||||
|
# Executables
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
|
*.app
|
||||||
|
*.i*86
|
||||||
|
*.x86_64
|
||||||
|
*.hex
|
||||||
|
|
||||||
|
# Debug files
|
||||||
|
*.dSYM/
|
||||||
|
*.su
|
||||||
|
*.idb
|
||||||
|
*.pdb
|
||||||
|
|
||||||
|
# Kernel Module Compile Results
|
||||||
|
*.mod*
|
||||||
|
*.cmd
|
||||||
|
.tmp_versions/
|
||||||
|
modules.order
|
||||||
|
Module.symvers
|
||||||
|
Mkfile.old
|
||||||
|
dkms.conf
|
||||||
|
|
25
Makefile
Normal file
25
Makefile
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
TARGET ?= VowelOrConsonant
|
||||||
|
CC ?= gcc
|
||||||
|
|
||||||
|
PREF_SRC = ./src/
|
||||||
|
PREF_OBJ = ./obj/
|
||||||
|
|
||||||
|
SRC = $(wildcard $(PREF_SRC)*.c)
|
||||||
|
OBJ = $(patsubst $(PREF_SRC)%.c, $(PREF_OBJ)%.o, $(SRC))
|
||||||
|
|
||||||
|
$(TARGET) : $(OBJ)
|
||||||
|
$(CC) $(OBJ) -o $(TARGET)
|
||||||
|
|
||||||
|
depend: .depend
|
||||||
|
|
||||||
|
.depend: $(SRC)
|
||||||
|
rm -f "$@"
|
||||||
|
$(CC) -MM $^ > "$@"
|
||||||
|
|
||||||
|
-include .depend
|
||||||
|
|
||||||
|
$(PREF_OBJ)%.o : $(PREF_SRC)%.c
|
||||||
|
$(CC) -c $< -o $@ -D_PROG_NAME=\"$(TARGET)\"
|
||||||
|
|
||||||
|
clean :
|
||||||
|
rm $(TARGET) $(PREF_OBJ)*.o *.d
|
BIN
VowelOrConsonant
Executable file
BIN
VowelOrConsonant
Executable file
Binary file not shown.
24
src/main.c
Normal file
24
src/main.c
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "scanFile.h"
|
||||||
|
|
||||||
|
int main(int argc,char *argv[]){
|
||||||
|
FILE* in;
|
||||||
|
FILE* out;
|
||||||
|
|
||||||
|
printf("Лабораторная работа №3\n\nВариант №1, 6106, автор: Морозов Иван\n\n");
|
||||||
|
|
||||||
|
if(argc!=3){
|
||||||
|
printf("Неверные аргументы! Используйте \"" _PROG_NAME " <имя_входного_файла> <имя_выходного_файла>\"\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
in = fopen(argv[1], "r");
|
||||||
|
out = fopen(argv[2], "w");
|
||||||
|
|
||||||
|
processFile(in, out);
|
||||||
|
|
||||||
|
fclose(in);
|
||||||
|
fclose(out);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
20
src/myAlphabet.c
Normal file
20
src/myAlphabet.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include <ctype.h>
|
||||||
|
#include "myAlphabet.h"
|
||||||
|
|
||||||
|
char isVovel(int c){
|
||||||
|
c = tolower(c);
|
||||||
|
return(c=='e'||c=='i'||c=='a'||c=='o'||c=='u'||c=='y');
|
||||||
|
}
|
||||||
|
|
||||||
|
char areVovelMore(MyString str){
|
||||||
|
int vovels = 0;
|
||||||
|
int consonants = 0;
|
||||||
|
for(unsigned int i = 0; i < str.len; i++){
|
||||||
|
char c = str.arr[i];
|
||||||
|
if(isalpha(c)){
|
||||||
|
if(isVovel(c)) vovels++;
|
||||||
|
else consonants++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return vovels>consonants;
|
||||||
|
}
|
9
src/myAlphabet.h
Normal file
9
src/myAlphabet.h
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#ifndef MY_ALPHABET_H_
|
||||||
|
#define MY_ALPHABET_H_
|
||||||
|
|
||||||
|
#include "myString.h"
|
||||||
|
|
||||||
|
char isVovel(int c);
|
||||||
|
char areVovelMore(MyString str);
|
||||||
|
|
||||||
|
#endif
|
37
src/myString.c
Normal file
37
src/myString.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "myString.h"
|
||||||
|
|
||||||
|
static void reallocString(MyString* str);
|
||||||
|
|
||||||
|
MyString newString(unsigned int init_capacity){
|
||||||
|
MyString str;
|
||||||
|
str.arr = (char*) malloc(init_capacity);
|
||||||
|
str.len = 0;
|
||||||
|
str.capacity = init_capacity;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
void addCharToString(MyString* str, char c){
|
||||||
|
if(str->len >= str->capacity){
|
||||||
|
reallocString(str);
|
||||||
|
}
|
||||||
|
(str->arr)[str->len] = c;
|
||||||
|
(str->len)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void freeString(MyString* str){
|
||||||
|
free(str->arr);
|
||||||
|
str->len = 0;
|
||||||
|
str->capacity = 0;
|
||||||
|
str->arr = NULL;
|
||||||
|
str = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void reallocString(MyString* str){
|
||||||
|
str->arr = realloc(str->arr, (str->capacity)*2);
|
||||||
|
(str->capacity)*=2;
|
||||||
|
if(str->arr==0){
|
||||||
|
printf("Нет памяти для строки 0x%lX", (unsigned long) str);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
15
src/myString.h
Normal file
15
src/myString.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#ifndef MY_STRING_H_
|
||||||
|
#define MY_STRING_H_
|
||||||
|
|
||||||
|
typedef struct myStr
|
||||||
|
{
|
||||||
|
unsigned int capacity;
|
||||||
|
unsigned int len;
|
||||||
|
char* arr;
|
||||||
|
} MyString;
|
||||||
|
|
||||||
|
MyString newString(unsigned int init_capacity);
|
||||||
|
void addCharToString(MyString* str, char c);
|
||||||
|
void freeString(MyString* str);
|
||||||
|
|
||||||
|
#endif
|
41
src/scanFile.c
Normal file
41
src/scanFile.c
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include "scanFile.h"
|
||||||
|
#include "myString.h"
|
||||||
|
#include "myAlphabet.h"
|
||||||
|
|
||||||
|
#define DEFAULT_BUFFER_SIZE 16
|
||||||
|
|
||||||
|
void processFile(FILE* in, FILE* out){
|
||||||
|
while(!feof(in)){
|
||||||
|
MyString str = newString(DEFAULT_BUFFER_SIZE);
|
||||||
|
scanString(&str, in);
|
||||||
|
processString(out, str);
|
||||||
|
freeString(&str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void scanString(MyString* dst, FILE* src){
|
||||||
|
for(char ch = fgetc(src); ch != '\n' && !feof(src); ch = fgetc(src)){
|
||||||
|
addCharToString(dst, ch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void processString(FILE* out, MyString str){
|
||||||
|
char isVovelsMore = areVovelMore(str);
|
||||||
|
char letters['z'-'a'];
|
||||||
|
for(char i = 'a'; i < 'z'; i++){
|
||||||
|
letters[i-'a']=0;
|
||||||
|
}
|
||||||
|
for(unsigned int i = 0; i < str.len; i++){
|
||||||
|
char ch = str.arr[i];
|
||||||
|
if(isalpha(ch)){
|
||||||
|
ch = tolower(ch);
|
||||||
|
if(!letters[ch-'a'] && (isVovelsMore == isVovel(ch))){
|
||||||
|
fputc(ch, out);
|
||||||
|
}
|
||||||
|
letters[ch-'a']=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fputc('\n', out);
|
||||||
|
}
|
11
src/scanFile.h
Normal file
11
src/scanFile.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#ifndef SCANFILE_H_
|
||||||
|
#define SCANFILE_H_
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "myString.h"
|
||||||
|
|
||||||
|
void processFile(FILE* in, FILE* out);
|
||||||
|
void scanString(MyString* dst, FILE* src);
|
||||||
|
void processString(FILE* out, MyString str);
|
||||||
|
|
||||||
|
#endif
|
2
test_files/test1_in
Normal file
2
test_files/test1_in
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
bbad, sdiv
|
||||||
|
aaagh yd
|
3
test_files/test1_out
Normal file
3
test_files/test1_out
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
bdsv
|
||||||
|
ay
|
||||||
|
|
2
test_files/test2_in
Normal file
2
test_files/test2_in
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Shall I compare thee to a summer’s day?
|
||||||
|
Thou art more lovely and more temperate…
|
3
test_files/test2_out
Normal file
3
test_files/test2_out
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
shlcmprtd
|
||||||
|
thrmlvndp
|
||||||
|
|
3
test_files/test3_in
Normal file
3
test_files/test3_in
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
The quick brown fox jumps over the lazy dog
|
||||||
|
ackdaws love my big sphinx of quartz
|
||||||
|
The five boxing wizards jump quickly
|
4
test_files/test3_out
Normal file
4
test_files/test3_out
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
thqckbrwnfxjmpsvldg
|
||||||
|
ckdwslvmbgphnxfqrt
|
||||||
|
thfvbxngwrdsjmpqckl
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user