ZSIzadanie3/zsiKOD

136 lines
2.7 KiB
Plaintext

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <ctype.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int compare(const void *a, const void *b)
{
const char **pa,**pb;
pa = (const char **)a;
pb = (const char **)b;
return( strcmp(*pa,*pb) );
}
int main() {
int pocet_slov,pocet_znakov=0,i=0,count=0,number=0;
bool zhoda=false;
char* pole_smernikov[1000]={0};
char line[1000];
char cislo[1000];
fgets(cislo,1000,stdin);
int dlzka=strlen(cislo);
for(i=0;i<dlzka;i++){
if(isdigit(cislo[i])){
number=number*10;
number+=cislo[i]-'0';
}
else if(cislo[i]==' ' || cislo[i]=='\n' || cislo[i]==' '){
;
}
else{
puts("Nespravny vstup");
return 0;
}
}
//printf("prijaty: %d\n",number);
if(number==0){
puts("Nespravny vstup");
return 0;
}
while(fgets(line,1000,stdin)!=NULL){
if(strlen(line)<1){
return 0;
}
pocet_znakov=strlen(line);
//printf("Pocet znakov: %d\n",pocet_znakov);
for(i=0;i<pocet_znakov;i++){
if(line[i]>='A' && line[i]<='Z')count++;
if(line[i]>='a' && line[i]<='z')count++;
}
if(count==0){
//printf("Koniec");
break;
}
int size = (int)strlen(line);
size--;
while(size!=-1){
if(line[size]==' ' || line[size]=='\n' || line[size]==' '){
line[size]='\0';
}
else{
break;
}
size--;
}
//printf("Retazec: #%s#\n",line);
for(i=0;i<pocet_slov;i++){
char *str1=pole_smernikov[i];
if(strcmp(str1,line)==0)zhoda=true;
}
if(!zhoda){
// printf("Pridavam!\n");
pole_smernikov[pocet_slov] = malloc(pocet_znakov + 1);
memcpy(pole_smernikov[pocet_slov],line,pocet_znakov + 1);
pocet_slov += 1;
}
count=0;
zhoda=false;
}
if(pocet_slov==0){
puts("Ziadne prihlasky");
return 0;
}
for (i = 0; i < pocet_slov; i++){
int size = (int)strlen(pole_smernikov[i]);
size--;
while(size!=0){
if(pole_smernikov[i][size]==' ' || pole_smernikov[i][size]=='\n' || pole_smernikov[i][size]==' '){
pole_smernikov[i][size]='\0';
}
else{
break;
}
size--;
}
//printf("%d: %s\n",i+1,pole_smernikov[i]);
}
qsort(pole_smernikov,pocet_slov,sizeof(char *),compare);
//printf("Sorted:\n");
if(pocet_slov<=number && number>0){
puts("Prijati studenti:");
for (i = 0; i < pocet_slov; i++){
printf("%s\n",pole_smernikov[i]);
}
}
else{
puts("Prijati studenti:");
for (i = 0; i < number; i++){
printf("%s\n",pole_smernikov[i]);
}
puts("Neprijati studenti:");
for (i = number; i < pocet_slov; i++){
printf("%s\n",pole_smernikov[i]);
}
}
for (i = 0; i < pocet_slov; i++){
free(pole_smernikov[i]);
}
return 0;
}