Помогите,пожалуйста, написать программу на си(экзамен)!!!

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Алька
Сообщения: 4
Зарегистрирован: 25 май 2010, 14:32

Прорешала все экзамеционные билеты,а у этих 2х программ компилятор мне ошибку выдает!Помогите мне,пожалуйста!!!
1)Написать программу на Си,которая запрашивает с терминала имя текстового файла и произвольное слово и ищет это слово в файле.
2)Написать программу на языке Си,которая создает два списка из целых чисел(числа вводятся с терминала).сливает их в один список и выводит результат на экран.Ввод,вывод и слияние оформить отдельными функциями.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Давай сюда код, на котором компилятор ошибку даёт. Будем разбираться.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Алька
Сообщения: 4
Зарегистрирован: 25 май 2010, 14:32

С 1 программой я разобралась сама,а вот 2 ошибку опять выдает!
Вот код 2 программы,что за ошибка?

Код: Выделить всё

#include <stdio.h>
#include <conio.h>
#include <alloc.h>

struct ptr1{
   int data;
   struct ptr1 *next;
};

typedef struct ptr1 spis1;
typedef spis1 *spis;

void dobav(spis *);
void printl(spis);
void menu();
void add(spis *,spis *);

main(void)
{
   int re;
   spis a=NULL;
   spis b=NULL;
   menu();re=0;
   scanf("%d",&re);
   while ((re!=5))
     {
       switch (re)
     {
         case 1:dobav(&a);break;
         case 2:dobav(&b);break;
         case 3:add(&a,&b);break;
         case 4 :p rintl(a);break;
     }
      menu();
      scanf("%d",&re);
    }
return(0);
}

void dobav(spis *c)
{
   spis nov,cur,pr=NULL;
   int key;
   nov=(spis )malloc(sizeof(spis1));
   cur=*c;
   printf("enter num ");
   scanf("%d",&key);
   if (nov!=NULL)
    {
      nov->data=key;
      while (cur!=NULL)
    {
       pr=cur;
       cur=cur->next;
     }
      nov->next=cur;
      if (pr==NULL) *c=nov;
    else pr->next=nov;
     }
   printl(*c);
}

void printl(spis s)
{
   spis cur;
   printf("*** begin  ***\n");
   cur=s;
   while (cur!=NULL)
     {
       printf("%d\n",cur->data);
       cur=cur->next;
      }
   printf("*** end ***\n");
   getchar();getchar();
}

void add(spis *a1,spis *b1)
{
   spis cur;
   cur=*a1;
   while (cur->next!=NULL)
     cur=cur->next;
  cur->next=*b1;
   printf("marged");
   getchar();getchar();
}

void menu()
{
   clrscr();
   printf("1-add first\n2-add second\n3-marge\n");
   printf("4-see \n5-exit\n");
}
Vasilisk
Сообщения: 116
Зарегистрирован: 13 фев 2004, 18:43

Вообще-то, компилятор не просто "выдаёт ошибку", а приводит сообщение в чём эта ошибка состоит и номер строки, в которой он её обнаружил.... Нельзя ли в студию предъявить это и это, а также тыцнуть пальцем в которой именно строчке программы это произошло? А то у меня с устным счётом проблемы - я больше десяти строк отсчитать не могу...
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Vasilisk писал(а): А то у меня с устным счётом проблемы - я больше десяти строк отсчитать не могу...
Угу, у меня та же проблема :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить