В массиве найти все записи которые начинаются на буква "А" - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы