PDA

Просмотр полной версии : СРОЧНО!!!3 простенькие лабы на с++(за вознаграждение)



Reen
20.12.2006, 22:16
Лабы надо сделать в консоль визарде...
лаба 1
Постановка задачи(сортировку здесь желательно сделать методом пузырька)
Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1<n<=100, 1<m<=50), выводит исходную матрицу, упорядочивает элементы матрицы и выводит матрицу после ее упорядочивания. Правило упорядочивания определяется вариантом. Варианты заданий приведены в табл. 1. Алгоритмы ввода, вывода и упорядочивания матрицы оформить в виде функций с параметрами.
14 Упорядочить все элементы матрицы таким образом, чтобы при чтении матрицы по столбцам ее элементы образовывали отсортированный по возрастанию массив

лаба 2
Постановка задачи
Используя алгоритмы работы с матрицей, разработанные в лабораторной работе № 1, разработать и протестировать программу обработки двух матриц с элементами разных типов. Программа должна содержать перегруженные функции для работы с целочисленной матрицей и матрицей другого типа: вещественной (варианты 3-5, 9, 12, 13,19, 20) или матрицей, элементы которой - строки (варианты 1, 2, 6-8, 10, 11, 14-18).

лаба 3
Постановка задачи
Создать шаблоны функций, выполняющей ввод, вывод и упорядочивание матриц. Протестировать шаблоны для матриц с элементами различных типов: int, float и char. Варианты заданий приведены в лабораторной работе № 1.


моя ася 271 764 486

Oleg_Rus
21.12.2006, 07:28
эх... если бы на Delphi,а еще лучше на Paskal'e, я бы в миг, но С++ я ни дуба ни шарю

shpi0
21.12.2006, 10:24
Какой у тебя вариант-то?
Задачки нетрудные, могу помочь

shpi0
21.12.2006, 13:29
Вот набросал первую, кажись так должно работать...
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define maxM 50
#define maxN 100

int A[maxN][maxM];

void FillMatrix(int n,int m)
{
randomize();
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
A[i][j] = random(999);
}
}
}

void Sort_14(int n,int m)
{
int tmp,j,k;
for (j=0;j<n;j++)
{
for (k=j;k<n;k++)
{
if (A[j][m]>A[k][m])
{
tmp=A[j][m];
A[j][m]=A[k][m];
A[k][m]=tmp;
}
}
}
}

void PrintMatrix(int n,int m)
{
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
printf ("%4d",A[i][j]);
}
printf("\n");
}
}

int main()
{
int i,N,M; // N (1,100); M (1,50).

clrscr();

do
{
printf ("Strok: ");
scanf("%d",&N);
} while (N<1 || N>100);

do
{
printf ("Stolbtsov: ");
scanf("%d",&M);
} while (M<1 || M>100);

FillMatrix(N,M);

PrintMatrix(N,M);

printf("Press a key");
getche();
printf("\n");

for (i=0;i<=M;i++)
{
Sort_14(N,i);
}

PrintMatrix(N,M);

getche();

return 1;
}

Reen
22.12.2006, 22:49
Какой у тебя вариант-то?
Задачки нетрудные, могу помочь

14 вариант
Мне их во вторник уже сдавать=(

Reen
22.12.2006, 22:57
Вот набросал первую, кажись так должно работать...
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define maxM 50
#define maxN 100

int A[maxN][maxM];

void FillMatrix(int n,int m)
{
randomize();
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
A[i][j] = random(999);
}
}
}

void Sort_14(int n,int m)
{
int tmp,j,k;
for (j=0;j<n;j++)
{
for (k=j;k<n;k++)
{
if (A[j][m]>A[k][m])
{
tmp=A[j][m];
A[j][m]=A[k][m];
A[k][m]=tmp;
}
}
}
}

void PrintMatrix(int n,int m)
{
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
printf ("%4d",A[i][j]);
}
printf("\n");
}
}

int main()
{
int i,N,M; // N (1,100); M (1,50).

clrscr();

do
{
printf ("Strok: ");
scanf("%d",&N);
} while (N<1 || N>100);

do
{
printf ("Stolbtsov: ");
scanf("%d",&M);
} while (M<1 || M>100);

FillMatrix(N,M);

PrintMatrix(N,M);

printf("Press a key");
getche();
printf("\n");

for (i=0;i<=M;i++)
{
Sort_14(N,i);
}

PrintMatrix(N,M);

getche();

return 1;
}

спасибо окнечно , но если честно ,я тут почти ничего не понял.....мы тока в этом семестре начали изучать с++ и многое из этого я вижу впервые(мы лабы делаем в консоль визарде).

shpi0
23.12.2006, 13:12
Ничего сверхестественного в том что я написал нет. В этом семестре это с сентября? Чтоб написать такую программку надо знаний которые в университете за месяц даются, а то и меньше (если вы на программиста учитесь).

Я кстати щас неточность нашел. Надо
do
{
printf ("Stolbtsov: ");
scanf("%d",&M);
} while (M<1 || M>100);на
do
{
printf ("Stolbtsov: ");
scanf("%d",&M);
} while (M<1 || M>50);заменить, а то несоответствие условию получается

shpi0
23.12.2006, 13:13
А более грамотно вот так написать:
do
{
printf ("Strok: ");
scanf("%d",&N);
} while (N<1 || N>maxN);

do
{
printf ("Stolbtsov: ");
scanf("%d",&M);
} while (M<1 || M>maxM);:)

Если есть конкретные вопросы по синтаксису - пишите.