АЯиП отчеты по лабам (кроме 24) (отчет лр 23)

Посмотреть архив целиком

Лабораторная работа 23.

Динамические структуры данных. Списки.


Задание: Дана символьная строка, состоящая из слов, разделенных пробелом. Составить программу, которая вводит строку, организует из слов строки однонаправленный список, упорядочивая слова по алфавиту. Вывести на печать сформированный список. Подсчитать количество слов, начинающихся на буквы “а” и “м”, вывести на печать слова и их количество или сообщение о неудаче.



Текст программы:


// lab23.cpp : Defines the entry point for the console application.

//Дана символьная строка, состоящая из слов, разделенных пробелом.

//Составить про-грамму, которая вводит строку, организует из слов

//строки однонаправленный список, упорядочивая слова по алфавиту.

//Вывести на печать сформированный список. Подсчитать количество

//слов, начинающихся на буквы "а" и "м", вывести на печать слова

//и их количество или сообщение о неудаче.



#include "stdafx.h"

#include

#include

#include

#include

struct zap {char sl[15];zap *p;};


int main(int argc, char* argv[])

{zap *dop1, *dop2, *cur, *prev, *first, *firstc;

char stres[20];

int fl;


// создаем первую запись

puts ("Vvedite stroky slov razdelennyx probelami. tochka - konec vvoda:");

prev=new zap;

first=new zap;

firstc=new zap;

strcpy (first->sl,"testing");



// организуем цикл обработки слов

while ((strcmp(stres,"")!=0) & (strlen(stres)!=1))

{

scanf ("%s", stres); //вводим очередное слово

cur=new zap;


if (strstr (stres,".")!=NULL)

{

fl=strlen(stres);

stres[fl-1]='\0';

strcpy (cur->sl,stres);

strcpy (stres,""); //если последнее слово, вырезаем точку

}

else strcpy (cur->sl,stres);


cur->p=NULL; //заносим его в указатель cur

if (strcmp(first->sl,"testing")!=0)

{

prev->p=cur;

if (strcmp(cur->sl,first->sl)<0)

{

prev->p=NULL;

cur->p=first;

first=cur;

cur=prev;

firstc=first;

}

else

{

dop1=first;

fl=0;

while ((dop1->p!=NULL) & (fl==0))

{

dop2=dop1;

dop1=dop1->p;

if (strcmp(cur->sl,dop1->sl)<0)

{

prev->p=NULL;

cur->p=dop1;

dop2->p=cur;

cur=prev;

fl=1;

}

}

}

prev=cur;} //если не первый элемент


else {first=cur; prev=cur; firstc=first;} //если первый элемент

//параметр выхода из цикла

}



//проверка верности упорядочивания очереди

{puts ("");puts ("Slova stroki po alfavitu:");

cur=firstc; fl=1;

while (cur!=NULL)

{printf ("%2d) %s\n",fl,cur->sl);

cur=cur->p;

fl++;}



//подсчет слов начинающихся на "а" и "м"

puts ("");

cur=firstc; fl=0;

while (cur!=NULL)

{if ((cur->sl[0]=='a') || (cur->sl[0]=='m')) {printf("Slovo na 'a' ili 'm': %s \n",cur->sl); fl++;}

cur=cur->p;

}


if (fl>0) printf ("Naideno %d slov na 'a' ili 'm'\n",fl);

else puts ("Slov nachinaushihsya na bukvu 'a' ili 'm' ne naideno");


getch(); return 0;

}

}







Тест:



































Cхема алгоритма:


Случайные файлы

Файл
konfstyle.doc
10540-1.rtf
102104.rtf
29374.rtf
17085.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.