В массиве найти все записи которые начинаются на буква "А" - C (СИ)
Формулировка задачи:
Здравствуйте, подскажите пожалуйста. Мне нужно в массиве найти все записи которые начинаются на буква "А". У меня прога ищет полностью слово как это изменить. Помогите пожалуйста
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> #include<process.h> struct person { char FIO[100]; char nazv[100]; int nom; }; void initStruct(struct person art[],int n) { int i; FILE *fin; fin = fopen("F://output.txt", "w"); if(!fin) { printf("Error"); exit(1); } for(i=0; i<n; i++) { printf("\n Imya\n"); printf("\n adress\n"); printf("\n vozrost \n"); scanf("%s", &art[i].FIO); fprintf(fin,"%s ",art[i].FIO); scanf("%s", &art[i].nazv); fprintf(fin,"%s ",art[i].nazv); scanf("%d", &art[i].nom); fprintf(fin,"%d ",art[i].nom); } fclose(fin); } void showStruct(struct person art[],int n) { int i; FILE *fin; fin = fopen("F://output.txt", "r"); if(!fin) { printf("Error"); exit(1); } printf(" ------------------------------------------------- \n"); printf("| FIO |Adres|Vozrost|\n"); printf(" -------------------------------------------------\n"); for(i = 0; i < n; i++) { fscanf(fin,"%s", &art[i].FIO); fscanf(fin,"%s", &art[i].nazv); fscanf(fin,"%d", &art[i].nom); printf("|%s ",art[i].FIO); printf("| %s ",art[i].nazv); printf("| %d ",art[i].nom); printf("\n"); } printf(" ------------------------------------------------ \n"); fclose(fin); } void zapros(struct person art[],int n) { int i; char fa[100]; FILE *fin; fin = fopen("F://output.txt", "r"); if(!fin) { printf("Error"); exit(1); } printf("Vvedite bykvy: "); scanf("%s",&fa); printf("\nStatia: \n"); printf(" ------------------------------------------------ \n"); for(i = 0; i < n; i++) { fscanf(fin,"%s", &art[i].FIO); fscanf(fin,"%s", &art[i].nazv); fscanf(fin,"%d", &art[i].nom); if( strcmp(art[i].FIO, fa)== 0) { printf("|%s",art[i].FIO); printf("| %s ",art[i].nazv); printf("| %d ",art[i].nom); printf("\n"); }} printf(" ------------------------------------------------ \n"); fclose(fin); } int main() { int n,k; printf("Kolichestvo zapisei: "); scanf("%d",&n); do { struct person art[n]; printf("\n1: Sozdat stryktyry. "); printf("\n2: pokazat stryktyry. "); printf("\n3: vse statia opredelennogo avtora."); scanf("%d",&k); switch(k){ case 1: initStruct(art,n);break; case 2: showStruct(art,n);break; case 3: zapros(art,n);break; default: printf("Vvedite 1, 2 ili 3.");break; } } while(getch()!=27); return 0; }
Решение задачи: «В массиве найти все записи которые начинаются на буква "А"»
textual
Листинг программы
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> #include<process.h> #define VOWELS "eyuioaEYUIOA" struct person { char FIO[100]; }; void removeVowels(char * s) { char * f = new char[256]; int q; int j = 0; for(int i = 0; s[i] != '\0'; ++i) if(strchr(VOWELS, s[i]) == NULL) { f[j++] = s[i]; q = j; } f[q] = '\0'; printf("result: %s\n", f); } void initStruct(struct person art[],int n) { int i; FILE *fin; fin = fopen("F://output.txt", "w"); if(!fin) { printf("Error"); exit(1); } for(i=0; i<n; i++) { printf("\n Imya\n"); scanf("%s", &art[i].FIO); fprintf(fin,"%s ",art[i].FIO); } fclose(fin); } void showStruct(struct person art[],int n) { int i; FILE *fin; fin = fopen("F://output.txt", "r"); if(!fin) { printf("Error"); exit(1); } printf(" ------------------------------------------------- \n"); printf("| FIO |Adres|Vozrost|\n"); printf(" -------------------------------------------------\n"); for(i = 0; i < n; i++) { fscanf(fin,"%s", &art[i].FIO); printf("|%s ",art[i].FIO); printf("\n"); printf("\n"); } printf(" ------------------------------------------------ \n"); fclose(fin); } void zapros(struct person art[],int n) { int i, j; char s[256] = ""; FILE *fin; fin = fopen("F://output.txt", "r"); if(!fin) { printf("Error"); exit(1); } for(i = 0; i < n; i++) { fscanf(fin,"%s", &art[i].FIO); } /* printf("result: %s\n", art[0].FIO);*/ for(i = 0; i < n; i++) removeVowels(art[i].FIO); fclose(fin); } int main() { int n,k; printf("Kolichestvo zapisei: "); scanf("%d",&n); do { struct person art[n]; printf("\n1: Sozdat stryktyry. "); printf("\n2: pokazat stryktyry. "); printf("\n3: vse statia opredelennogo avtora."); scanf("%d",&k); switch(k){ case 1: initStruct(art,n);break; case 2: showStruct(art,n);break; case 3: zapros(art,n);break; default: printf("Vvedite 1, 2 ili 3.");break; } } while(getch()!=27); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д