Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2011, 21:05   #1
tutis
Пользователь
 
Регистрация: 23.12.2010
Сообщений: 13
По умолчанию Линейный список. Язык С.

Здравствуйте. Помогите пожалуйста доделать программу. Условие. Картинная выставка организована в виде линейного списка. Каждая компонента указателя содержит названия картин и имя автора. Написать программу, которая обеспечивает:
1)Начальное формирование выставки.
2) Вывод всей выставки.
3)Вывод всех картин данного автора.
4)Вывод всех авторов выставки.
1) и 2) пункты я сделала. Проблема с 3) и 4) пунктами. Поиск картин по автору не выполняется. А как вывести всех авторов выставки не знаю.
Вот что у меня получилось.
Код:
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
struct TList
{
 char avtor[100];
 char name[100];
  TList *next;
};

int main()
{
TList *head=NULL,*cur=NULL,*prev=NULL;
int i,x,b,m;
 char s,k,h;
n:
system("cls");
printf(" ......Menu.........:\n");
printf("1.Sozdanie vistavki\n");
printf("2.Vivod\n");
printf("3.Poisk po avtoru\n");
printf("4.Vivod vseh avtorov\n");
printf("5.Exit\n");
printf("..............................\n");
scanf("%d",&x);
switch(x)
  {
//Формирование выставки
   case 1:
    {
  while(true)
    {
    cout<<"Dobavit? (y/n): ";
    cin>>k;
    if (k=='n') break;
    cur=new TList;
    cur->next=NULL;
    cout<<"\Avtor: ";
    cin>>cur->avtor;
    cout<<"\nNazvanie kartini: ";
    cin>>cur->name;
    cur->next=NULL;
     if (head!=NULL){ prev->next=cur; prev=cur;}
     else {head=cur; prev=cur;
     }
     }
   getch();
   goto n;
    }
//Вывод всей выставки
   case 2:
    { 
    cur=head;
    system("cls");
    if (cur==NULL)
    {
    cout<<"spisok pust"<<"\n";
    getch();
    goto n;
    }
 while (cur!=NULL)
     {
      cout<<"Avtor: "<< cur->avtor<<"\nNazvanie kartini: "<<cur->name<<"\n";            
     cur=cur->next;
       }
 getch();
   goto n;
    }
//Вывод всех картин данного автора
   case 3:
    {
    cur=head;
    if (cur==NULL)
    {
    cout<<"spisok pust"<<"\n";
    getch();
    goto n;
    }
  cout<<"\nVvedite avtora: ";cin>>s;
  i=1;
    while (cur!=NULL)
     {
      if ((cur->avtor,s)==0)    	    
      {
      cout<<"Nazvanie kartini :\n"<<cur->name;
      cur=cur->next;
      }
    if (i==1)
    cout<<"Avtor ne naiden"<<"\n";
      getch();
      goto n;
      }
     //Вывод всех авторов выставки   (не знаю как сделать)
    case 4:
     {
     cur=head
    if (cur==NULL)
    {
    cout<<"spisok pust"<<"\n";                  
    goto n;
    } 
    ............
    
          } 
//Выход
 case 5:
   {
  break;
   }
 default:
{
      cout<<"Vi nepravilno ukazali punkt menu.Try again"<<"\n";
      getch();
      goto n;
}
}
system("clear");
while(head)
{
cur=head->next;
delete(head);
head=cur;
}
getch();
return 1;
}
}
Помогите пожалуйста с выводом всех картин данного автора и с выводом всех авторов выставки.
tutis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Линейный список doter Общие вопросы C/C++ 1 20.02.2011 21:36
линейный однонаправленный список с++ kate311893 Общие вопросы C/C++ 0 07.12.2010 10:02
Линейный-односвязный список Айдар Помощь студентам 1 01.06.2010 10:20
Линейный односвязный список Absinth Помощь студентам 4 11.11.2008 20:29
Линейный список Black_Ak24 Паскаль, Turbo Pascal, PascalABC.NET 2 04.01.2008 15:00