2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 задачи на С помогите,пожалуйста...
Сообщение16.03.2009, 20:52 


28/02/09
157
Помогите пожалуйста с этиим задачами...сам в программировании не разбираюсь...
1) Графы и системы дорог.
Для заданного натурального числа n > 4 построить граф (без петель и без кратных
рёбер) с n вершинами, в котором степень каждой вершины равна 4 (Степень вершины
равна числу рёбер, инцидентных ей).

--------------------------------------------------------------------------------
2) Грамматики, языки и автоматы.
Задано множество правил подстановки вида v(i)->w(i), где все v(i) и w(i) - слова
одной и той же длины. Определить, можно ли перевести одно заданное слово в
другое последовательным применением заданных правил подстановки. Например, если
имеются правила подстановки ba->ab, cb->bc, ca->ac, то слово cbba переводится в
слово abbc следующим образом: cbba->cbab->cabb->acbb->abcb->abbc.

--------------------------------------------------------------------------------
3) Формулы и программы.
Задана обратная польская запись (например, "1 2 +" для выражения "1 + 2", "X 3 Y
* +" для "X + 3 * Y", "X 3 + Y *" для "( X + 3 ) * Y") некоторого простого
выражения, не содержащего вхождений идентификаторов. Вычислить значение этого
выражения.

--------------------------------------------------------------------------------
4) Геометрия.
Задано n точек на плоскости. Построить дерево с вершинами в данных точках так,
чтобы была минимальной суммарная длина его рёбер.

--------------------------------------------------------------------------------
5) Игры.
Заполнить матрицу размера 5 на 5 цифрами (не числами) таким образом, чтобы цифры
в строках и столбцах не повторялись, совпадали суммы цифр по столбцам и по
строкам, а также были бы простыми все пятизначные числа, изображенные строками и
столбцами матрицы

 Профиль  
                  
 
 
Сообщение16.03.2009, 20:55 
Экс-модератор


17/06/06
5004
patriarch в сообщении #195684 писал(а):
3) Формулы и программы.
Юзайте структуру данных "стек". Как только в записи встречается число - кладёте его в стек; как только встречается операция - вытаскиваете два числа, делаете с ними операцию и кладёте результат.

 Профиль  
                  
 
 
Сообщение16.03.2009, 20:57 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
patriarch в сообщении #195684 писал(а):
Помогите пожалуйста с этиим задачами...сам в программировании не разбираюсь...


Если Вы в программировании не разбираетесь, то зачем вообще решать эти задачи? Зачем лезть в распределительный щиток или в розетку с отверткой, если не разбираешься в электричестве?
:?

 Профиль  
                  
 
 
Сообщение17.03.2009, 05:09 


28/02/09
157
PAV писал(а):
patriarch в сообщении #195684 писал(а):
Помогите пожалуйста с этиим задачами...сам в программировании не разбираюсь...


Если Вы в программировании не разбираетесь, то зачем вообще решать эти задачи? Зачем лезть в распределительный щиток или в розетку с отверткой, если не разбираешься в электричестве?
:?

потому что мне надо сдать эти задачи на зачет....

это похоже на 3 задачу?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void turn (char s[])
{
int i=strlen(s)-1,j;
char c;

for(j=0;j<i/2+1;j++)
{
c=s[j];
s[j]=s[i-j];
s[i-j]=c;
}
}

void insert(char s1[],char s2[],int n)
{
int i,l1=strlen(s1),l2=strlen(s2);

for(i=l1+n;i>l1-1;i--)
{
s1[i]=s1[i-n];
s1[i-n]=' ';
}


for(i=0;i<l2;i++)
s1[i+n]=s2[i];
}

int schet(char s[])
{
int i=0,l=strlen(s),j=0,b=0,c,res;
char s1[255],s2[255];

while(((s[i]<'0')||(s[i]>'9')||(s[i]==' '))&&(i<l))
i++;
if(i!=l)
while((s[i]>='0')&&s[i]<='9')
s1[j++]=s[i++];

s1[i]='\0';
res=atoi(s1);

while((s[i]!='-')&&(s[i]!='+')&&(s[i]!='*')&&(s[i]!='/')&&(i<l))

 Профиль  
                  
 
 
Сообщение22.03.2009, 15:05 


28/02/09
157
народ а подскажите в 3 задаче только числа?или там ещё переменные задавать?вроде написал но на выражение типа X Y + оно выдает ноль.Это нормально?
вот код:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void turn (char s[])    
{
 int i=strlen(s)-1,j;  
 char c;             

 for(j=0;j<i/2+1;j++)  
 {
    c=s[j];
    s[j]=s[i-j];       
    s[i-j]=c;
 }
}

void insert(char s1[],char s2[],int n) 
{
 int i,l1=strlen(s1),l2=strlen(s2);    
 for(i=l1+n;i>l1-1;i--)   
 {
    s1[i]=s1[i-n];
    s1[i-n]=' ';    
 }

 for(i=0;i<l2;i++) 
    s1[i+n]=s2[i];
}

int schet(char s[])  
{
 int i=0,l=strlen(s),j=0,b=0,res;
 char s1[255],s2[255];
 
 while(((s[i]<'0')||(s[i]>'9')||(s[i]==' '))&&(i<l))  
    i++;                                
 if(i!=l)
    while((s[i]>='0')&&s[i]<='9')             
       s1[j++]=s[i++];
 
 s1[i]='\0';
 res=atoi(s1);                   
 
 while((s[i]!='-')&&(s[i]!='+')&&(s[i]!='*')&&(s[i]!='/')&&(i<l)) 
    i++;
 if(i!=l)       
 {
    j=i-1;
    while(s[j]==' ')             
       j--;          
    while((s[j]>='0')&&(s[j]<='9')&&(j>-1)) 
    {
       s1[b++]=s[j];
       s[j--]=' ';
    }
    s1[b]='\0';
  
    b=0;
    while(s[j]==' ')
       j--;
  
    while((s[j]>='0')&&(s[j]<='9')&&(j>-1))
    {
       s2[b++]=s[j];
       s[j--]=' ';
    }
    s2[b]='\0';
 
    turn(s1); 
    turn(s2);
  

    if(s[i]=='-')
       res=atoi(s2)-atoi(s1);
    if(s[i]=='+')
       res=atoi(s2)+atoi(s1);
    if(s[i]=='*')                
       res=atoi(s2)*atoi(s1);
    if(s[i]=='/')
       res=atoi(s2)/atoi(s1);
    s[i]=' ';

    itoa(res,s1,10);       
    insert(s,s1,i);
    res=schet(s);
    return(res);       
 }
 return(res);
}

void main()
{
 char str[1024];
 int res=0;             

 printf("Vvedite virajenie\n");

 gets(str);             
 res=schet(str);    

 printf("%i\n",res);

}

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Dmitriy40


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group