Решение лабораторных, контрольных и т.д. на С++

  • Автор темы Автор темы European
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Я не знаток Си, но несколько математических рассуждений добавлю. Если даны две противоположные вершины квадрата, то можно по теореме пифагора посчитать этот отрезок. Он будет являтся диагональю квадрата. А как известно, диагональ в квадрате со стороной а равна а*корень(2). Поэтому чтобы узнать сторону квадрата, мы полученный отрезок делим на корень из двух. Ну а далее немного надо подумать, чтобы определить, где лежат две другие вершины квадрата. Это уж вы сами :( Там легко ;)
 
Если стороны параллельны коорд. осям, то я понял... А если нет, тогда как? :)
 
Язык: Си
Задача: имеется текстовый файл, нужно вывести статистику этого файла: сколько в файле слов. строк, предложений.

[codebox]#include <stdio>
#include <stdlib>
FILE *f;
int s,q,w;
char c;
void main (){
s=q=w=0;
f=fopen("K:\\1.txt","rt");
if((f=fopen("K:\\1.txt","rt"))==0){
//osibka!
}
while(!feof(f)){
fscanf(f,"%c",&c);
if(c==' '){
s++;
}
if (c=='.'){
q++;
}
if(c=='\n'){
w++;
}
}
fclose(f);
printf("Slov v faile =%d \n",s);
printf("Predlojenii v faile =%d \n",q);
printf("Strok v faile =%d \n",w);
}[/codebox]

Проблема в том, что выводит все значения по нолю. Я конечно не специалист, но может кто-то может сказать где ошибка или посоветовать какое-нибудь другое решение. Заранее спасибо.
 
меняй
Код:
f=fopen("K:\\1.txt","rt");
на
Код:
f=fopen("K:\\1.txt","r");
 
точно) заработало. Но теперь другая проблема:выводит неправильное кол-во слов. Я то впринципе понимаю почему, но как с этим бороться ?) )
 
Помогите пожалуйста разобраться. что то совсем запуталась, как на С++ с помощью класса записать данные в связанные списки. Либо информации подкинуть....

#include <cstdlib>
#include <iostream>

using namespace std;

class Spisok{
public:
spisok();
void Insert(int *, int);

private:
int number;
int *sPtr; // начало списка
};

Spisok::Spisok()
{
number=0;
}
void Spisok::Insert(int *sPtr, int num)
{
int *currentPtr, *previosPtr;
newPtr=new Spisok;
...........
}

int main()
{
int a=5, b=11;
Spisok value;
value.Insert(&b, a);
system("PAUSE");
return EXIT_SUCCESS;
}
 
Люди!!! Очень нужна ваша помощь

Предметный указатель организован как линейный список.
Каждая компонента указателя содержит слово и номера страниц, на которых это
слово встречается. Количество номеров страниц, относящихся к одному слову, от
одного до десяти.
Составить программу, которая обеспечивает:
• начальное формирование предметного указателя;
• вывод предметного указателя;
• вывод номеров страниц для заданного слова.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок
при вводе.

структура выглядит сл. образом
Код:
struct P_UKAZ
{
char *word;
int page;
P_UKAZ *next;
P_UKAZ *prev;
}

мне бы хотя бы чтобы он формировался, остальное как нибудь сама дойду :rolleyes:
 
Откуда данные надо брать и что за данные? Скорре всего книга какая-то...
 
Еще вопрос! Очень нужно!
Есть 2 текстовых файла. Необходимо:
1) Смешать файлы через N строк (N вводится с клавиатуры)
2) Записать слова текста в 9 колонок
3) Найти в файле слово по фрагменту заданного образца
4) Подсчитать в файле общее количество и число разных символов
Заранее спасибо, очень надо!!!
 
Всем спасибо, разобралась со связанными списками! УРА!!!!!!!!!!!!!!!!!
 
pererva по поводу задачки пиши на Rrrravvv@yandex.ru
 
Народ! Помогите с задачкой!
Даны координаты двух противоположных вершин квадрата и длина его стороны. Нужно определить, принадлежит ли точка квадрату (ее координаты вводятся с клавиатуры).
Заранее спасибо.
-выбираешь систему координат с началом в одной из данных точек квадрата и орты направлены по сторонам квадрата
(квадрат должен бытьв первой четверти).
-переводишь точку которую надо проверить на принадлежность в выбранную систему координат
- проверяешь принадлежность точки типа (0 < x && x < ДлинаСтороны && 0 < y && y < ДлинаСтороны)

Код:
int side; // длина стороны квадрата
vec3 p0, p1; //очки квадрата
vec3 p; // искомая точка

vec3 delta = p0; // вектор приводящий квадрат к началу координат

vec3 diag= p1 - p0;
vec3 diag45 = vec3(1,1,1);
float alpha= acos(dot_product(diag, diag45)); // угол поворота

// формируем матрицу преобразования исходной системы координат в "координаты квадрата" 
mat33 mat = mat33.identity;
mat.transtlate(delta);
mat.rotate(alpha);

p = mat * p; // умножение матрицы на вектор

// тут проверка
if( (0 < p.x && p.x < side) && (0 < p.y && p.y < side) ) printf("yes");
else printf("no");

код для mat33 и vec3 былв NvidiaSDK по-моему...
 
Люди пожалуйста нужна ваша помощь !!!
Похожая задача уже была но у меня почемуто неполучется:
Заполнить матрицу (9х9) линейной последовательностью (1,2,3,4,5....), от центра по спирали: влево - вниз - впра-во - вверх.

l09_e004.gif
 
Код:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

#include<string.h>


#define N 9



int main()
{
int i, j, c, q, x, sign_g, sign_v;
int matrix[ N ][ N ];

memset( matrix, 0, sizeof(matrix) );




matrix[ N/2 ][ N/2 ] = 1;

for( i=N/2, j=N/2, c=0, sign_g=0, sign_v=0, step=1, q=0; c<N*N; q++ )
{

if( q == step )
{
if( sign_v ) 
{
sign_v = false;
for( x=0; x<step; x++ ) matrix[ i++ ][ j ] = (c++)+1;
}
else
{
sign_v = true;
for( x=0; x<step; x++ ) matrix[ i-- ][ j ] = (c++)+1;
}
goto postpl;
}

c++;


if( q == step+1 )
{
q = 0;

if( sign_g ) 
{
sign_g = false;
}
else
{
sign_g = true;
}


++step;
} 

if( sign_g ) 
{
j++;
}
else
{
j--;
}

postpl:

matrix[ i ][ j ] = c+1;

}




// Showing effect
for( i=0; i<N; i++ )
{
for( j=0; j<N; j++ )
{
printf( "%4d",  matrix[ i ][ j ] );
}
printf( "\n" );
}


return 0;
}
 
В приведенном мной примере обнаружились следующие косяки:
потерялось обьявление переменной int step;
в условие цикла for( i=N/2, j=N/2, c=0, sign_g=0, sign_v=0, step=1, q=0; c<N*N; q++ )
надо добавить -1 т.е так c<N*N-1;

Примечание: меняя значения sign_g, sign_v (0 или 1) можно менять направление спирали

Прикреплен демо файл и код от него(дополненный тот что приведен ранее)
 

Вложения

  • _.rar
    _.rar
    28,5 КБ · Просмотры: 151
Народ, нужна ваша помощь, сам не пишу на С, работаю с объектно-орентированными языками, а в универе дали такую задачку по компьютерной графике, а обратится больше некуда:

__.jpg

Так вот, стоящая вертикально плита должна двигаться вперед, назад,влево,вправа и вокруг своей оси при помощи кнопок клавы, кружок- это точечный источник света, а следовательно от плиты должно падать тень, все это должно сделано быть в кабинетной проекции.1 этап только каркас фигур со всем функционалом,2 этап фигуры уже сплошные....(желательно с комментами в коде, для меня, а не для препода)

зы: если поможете, могу вознаграждение заплатить....
 
где можно скачать Turbo C++.3.0 нигде не могу.помогите!!!
 
Люди! Помогите!
Есть 2 текстовых файла. Необходимо cмешать файлы через N строк (N вводится с клавиатуры)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!