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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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