Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.
Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.
Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.
а остальные не посмотрите???плиз
3. Дан массив, содержащий N элементов. Написать программу с подпрограммой, которая будет выполнять упорядочение элементов массива по возрастанию
А не могли бы вы посмотреть вот такую еще задачку. Тоже в C.
Дан текст из нескольких строк. Составить слово из последних букв слов k-ой строки.
Заранее спасибо)
А не могли бы вы посмотреть вот такую еще задачку. Тоже в C.
Дан текст из нескольких строк. Составить слово из последних букв слов k-ой строки.
Заранее спасибо)
да обязательно![]()
А не могли бы вы посмотреть вот такую еще задачку. Тоже в C.
Дан текст из нескольких строк. Составить слово из последних букв слов k-ой строки.
Заранее спасибо)
csbwalker
Да, просто взять набор букв))Текст надо с клавиатуры вводить)
#include <STDIO.H>
#include <STRING.H>
#include <STDLIB.H>
void makeWord(char *str, char *result)
{
char *w, d[] = " ";
int i = 0;
for(w = strtok(str, d); w != NULL; w = strtok(NULL, d))
if(strlen(w) != 0)
result[i++] = w[strlen(w) - 1];
result[i] = '\0';
}
void ask(char *message, int *n, int minval, int maxval)
{
int x;
do
{
printf("%s [%d...%d]: ", message, minval, maxval);
scanf("%d", &x);
} while((x < minval) || (x > maxval));
*n = x;
}
int main()
{
char *result, *strings;
int count, maxlen, i, a;
ask("Введите максимальную длину строки", &maxlen, 1, 200);
ask("Введите количество строк", &count, 1, 200);
strings = malloc(count * (maxlen + 1));
if(strings == NULL)
{
printf("Не удалось выделить память для текста\n");
return 1;
}
result = malloc(maxlen + 1);
if(result == NULL)
{
printf("Не удалось выделить память для результата\n");
return 2;
}
for(i = 0; i < count; i++)
{
printf("Введите строку %d: ", i + 1);
fflush(stdin);
gets(strings + i * maxlen);
}
do
{
ask("Введите номер строки для генерации слова (0 для выхода)", &a, 0, count);
if(a == 0)
break;
makeWord(strings + (a - 1) * maxlen, result);
printf("Результат: <%s>\n", result);
} while(1);
printf("Работа завершена!\n");
return 0;
}
На плоскости задано множество окружностей (способ задания - координаты центра и радиус). Две окружности А и В назовем связанными, если они пересекаются либо существует третья окружность С заданного множества, связанная с А и В. Выбрать максимальное подмножество попарно не связанных друг с другом окружностей.
Си байлдер... Можно другую разновидность си)
/************************Preprocessor's operations***********************/
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include "d:\ddz\proc.cpp"
/*****************************Global variables***************************/
FILE *in,*out; //Servise variables
char inname[80], outname[80]; //Names of input & output files
int count; //Count of circles
int i,j,w; //
/******************************Main function*****************************/
int main()
{
clrscr();
//Ask the user about name of the input file
printf("Enter the name of input file, please: ");
scanf("%s", &inname);
///////////////////////////////////////////
//Opening input file
if ((in = FOpen(inname,"r"))==NULL) return 1;
////////////////////
//Reading nomber of circles
fscanf(in, "%d", &count);
if (count <1)
{
printf("Incorrect format of input file\n");
fclose(in);
return 1;
}
///////////////////////////
//Declaring array of CIRCLE
CIRCLE *circle = new CIRCLE[count];
////////////////////////
//Reading circles information
printf("Information from input file:\n Count of circles: %i\n",count);
printf(" \n");
printf(" # X Y R \n");
for (i=0;i<count;i++)
{
fscanf(in,"%f %f %f", &circle[i].x, &circle[i].y, &circle[i].r);
printf(" %2i %5.4f %5.4f %5.4f \n",i, circle[i].x,circle[i].y,circle[i].r);
circle[i].crossflag=0;
}
printf(" ");
/////////////////////////////
//Now test)
//int **s = new int*[count];
int **s = new int*[count];//тут создали только массив указателей
for(i=0;i<count;++i) s[i]=new int[count];//а вот собственно выделение памяти для элементов массива
for(i=0;i<count;++i) for(j=0;j<count;++j) s[i][j]=0;//обнуление
for (i=0;i<count;i++) for (j=0;j<count;j++) s[i][j]=0;
MatrixCreator(s, count, circle);
printf("\n");
printf("Matrix of atteinability:\n");
for (i=0;i<count;i++) {for (j=0;j<count;j++) if (i!=j)printf(" %i",s[i][j]); else printf(" °"); printf("\n");};
///////////
getch();
int *mas=new int[count];
Vibor(s, count, mas);
printf("\n");
getch();
for (i=0;i<count;i++) if (mas[i]) printf("%i ", i);
getch();
///////////
for(i=0;i<count;++i) delete [] s[i];
delete [] s;
return 0;
}
//Declaring new data type
struct CIRCLE {
float x, y, r;
char crossflag;
};
int j1, k1,l,i2;
/////////////////////////
//Folloving we'll have dinamic array of one
/*******************************Opening file****************************/
FILE *FOpen(char *path, char *reg)
{
FILE *name;
if ((name = fopen(path,reg))!=NULL) return name;
printf("Unable to open file '%s'",path);
return NULL;
}
/*Tests crossing of 2 circles*/
int test(CIRCLE c1,CIRCLE c2)
{
//printf("%i %i %i %i %i %i", c1.x, c1.y, c1.r, c2.x, c2.y, c2.r);
if ( sqrt( (fabs(c1.x-c2.x)*fabs(c1.x-c2.x))+(fabs(c1.y-c2.y)*fabs(c1.y-c2.y))) <(c1.r+c2.r)) return 1;
return 0;
}
/////
int test2(CIRCLE c1, CIRCLE c2)
{
if (((sqrt( ((c1.x-c2.x)*(c1.x-c2.x))+((c1.y-c2.y)*(c1.y-c2.y)))+c1.r)<c2.r)||( (sqrt( ((c1.x-c2.x)*(c1.x-c2.x))+((c1.y-c2.y)*(c1.y-c2.y)))+c2.r)<c1.r))
return 0;
return 1;
}
int MatrixCreator(int **s, int n, CIRCLE *circle)
{
int i2,j2,k2;
for (i2=0;i2<n;i2++)
for (j2=0; j2<n; j2++)
if(i2!=j2)
if (test (circle[i2],circle[j2]))
if (test2(circle[i2],circle[j2])) s[i2][j2]=5 ;
// for (i2=0;i2<n;i2++)
// for (j2=0;j2<n;j2++)
// for (k2=0;k2<n;k2++)
// if (i2!=j2)
// if(s[k2][i2] && s [j2][k2])
// s[j2][i2]=4;
// for (i2=1;i2<n;i2++) for (j2=1; j2<n; j2++) s[n-j2][i2]= s[i2][n-j2];
for (k2=0;k2<n;k2++)
for (i2=0;i2<n;i2++)
for (j2=0;j2<n;j2++)
s[i2][j2] = s[i2][j2] || (s[i2][k2] && s[k2][j2]);
return 0;
}
/*int Vibor(int **s, int i, int *mas, int*w, int n)
{
for (j1=0;j1<n;j1++)
///for(k1=0;k1<n;k1++)
/// if(!s[j1][k1])
/// {
/// mas[*w++]=k1;
/// Vibor(s,k1,mas,w,n);
/// }
k1=1;
for(l=0;l<*w;l++)
if (j1==mas[l]) k1=0;
if ((!k1)||(s[i][j1]==0))
{ *w++;
mas[*w]=j1;
Vibor(s,j1,mas,w,n);
}
}
*/
void Vibor(int **s, int n, int *mas)
{// int l=-1;
int *flags = new int[n];
for (i2=0;i2<n;i2++) flags[i2] = mas[i2] = 0;
l2:
for (i2=0;i2<n;i2++)
if (!flags[i2])
{
flags[i2]= mas[i2]=1;
for (j1=0;j1<n;j1++)
if (s[i2][j1]) flags[j1]=1;
}
for (i2=0;i2<n; i2++)
if (!flags[i2]) goto l2;
}
Вторую решил , с функицией проблемы и с файлом.