Строка: Найти и напечатать все идентификаторы, не содержащие цифр. - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <ctype.h> #define M 21 #define N 50 void poisk (char B[N][M]); void main() { char A[N][M]; int i, j,x; printf("\n Vvedite stroky identificatorov,"); printf("\n v konce potavte '###'\n"); for (i=0;i<=N;i++) { if(i==N) { printf("\n error \n"); return; } for(j=0;j<M;j++) { if (j==M-1) { printf("\n error"); return; } x=scanf("%c",&A[i][j]); if (x==0) printf("\n error,ne vvedeni indifikatori"); if (A[i][j]==' ') break; if(A[i][j]=='#' && A[i][j-1]=='#' && A[i][j-2]=='#') break; } if (A[i][j]=='#' && A[i][j-1]=='#' && A[i][j-2]=='#') break; } printf("\n vi vveli:\n"); for (i=0;i<N;i++) { for(j=0;j<M;j++) { printf("%c",A[i][j]); if(A[i][j]=='#' && A[i][j-1]=='#' && A[i][j-2]=='#') break; if (A[i][j]==' ') break; } if(A[i][j]=='#' && A[i][j-1]=='#' && A[i][j-2]=='#') break; } poisk(A); return; } void poisk (char B[N][M]) { int i,j,schet; printf("\n Rezul'tat:"); for (i=0;i<M;i++) { j=0; schet=0; while(B[i][j]!=' '|| j<M-1) { if(B[i][j]=='#' && B[i][j+1]=='#' && B[i][j+2]=='#') break; if (B[i][j]==' ' || B[i][j+1]==' ') break; if (isdigit(B[i][j])) if(isalpha(B[i][j+1])) schet++; if(isalpha(B[i][j])) if(isdigit(B[i][j+1])) schet++; j++; } if (schet==j) for(j=0;j<N;j++) { if(B[i][j]=='#' && B[i][j+1]=='#' && B[i][j+2]=='#') break; printf("%c",B[i][j]); if (B[i][j]==' ') break; } if(B[i][j]=='#' && B[i][j+1]=='#' && B[i][j+2]=='#') break; } return; }
Решение задачи: «Строка: Найти и напечатать все идентификаторы, не содержащие цифр.»
textual
Листинг программы
#include<stdio.h> #include <stdlib.h> #include <ctype.h> #define M 21 //количество символов в слове #define N 35 //количество слов char A[N][M]; void poisk(void); main() { int i,j; char x; printf("\n Vvedite stroky identificatorov,"); printf("\n v konce potavte ','\n"); for (i=0; i<M; ++i) { for (j=0; j<N; ++j) { x=scanf("%c",&A[i][j]); if (x==0) printf("\n error,ne vvedeni indifikatori"); if ((A[i][j]==' ')||(A[i][j]==',')) break; } if (A[i][j]==',') break; } /*вывод содержимого на дисплей*/ printf("\n vi vveli:\n"); for (i=0;i<N;i++) { for(j=0;j<M;j++) { printf("%c",A[i][j]); if ((A[i][j]==' ')||(A[i][j]==',')) break; } if (A[i][j]==',') break; } printf("\n"); poisk(); getchar(); getchar(); return 0; } /*поиск идентификаторов не содержащих цифр и вывод их на дисплей*/ void poisk(void) { int i,j,rez,k; printf("\n Rezul'tat:\n"); for (i=0;i<N;++i) { rez=0; for(j=0;j<M;++j) { if (isdigit(A[i][j])) { rez=1; break; } if ((A[i][j]==' ')||(A[i][j]==',')) break; } if (rez==0) { for (k=0;k<M;++k) { printf("%c",A[i][k]); if ((A[i][k]==' ')||(A[i][k]==',')) break; } } if (A[i][j]==',') break; } }