Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2009, 19:01   #1
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию Проги с массивами

Помогите пожалуйста доделать проги.
1). Вводим размеры матрицы(m,n), создается матрица из рандомных чисел, потом нужно чтобы программа добавляла строку после каждой четной строки. Но также, ко всему этому нужно сделать меню, типа:

do
{
cout<<”1. Формировка масива\n”;
cout<<”2. Вывод масива\n”;
cout<<”3. Удаление в масиве\n”; //если используется
cout<<”4. Добавление к масиву\n”;
cout<<”5. Выход\n”;
cin>>k;
switch (k)
{
case 1: mas=form_mas(SIZE);input_mas(mas,SI ZE); break;//выделение памяти и заполнение
case 2: print_mas(mas,SIZE); break;//вывод
case 3: del_mas(mas,SIZE);break;//удаление
case 4: add_mas(mas,SIZE);break;//добавление
}
while (k!=5);//выход


У меня есть набросок:
Код:
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;

form_matr(int m,int n)
{
matr = new int*[m];
for(i=0;i<m;i++)
 {
  matr[i] = new int[n];
  for(j=0;j<n;j++) matr[i][j] = rand()%100;
  cout<<endl;
 }
cout<<endl;

}

print_matr(int m,int n,int matr)
{
for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
   {
    cout.width(4);
    cout<<matr[i][j]; //у меня здесь выскакивает ошибка(( как научить
                            //прогу чтобы она знала что это масив и могла
                            //сделать его вывод
   }
  cout<<endl;
 }
cout<<endl;
}

add_matr() //какой алгоритм можно использовать чтобы после каждой 
           //четной строки программа добавляла(вставила) одну рандмоную строку 


int main()
{
	int n;
    cout<<"Vvedite kolichestvo strok: ";
    cin>>m;
    cout<<"Vvedite kolichestvo stolpcov: ";
    cin>>n;
	person*matr=form_matr(m,n);
	init_matr(matr,m,n);
	print_matr(matr,m,n);
	return 1;
}
2). И вот еще одна задачка с одномерным динам. массивом:
Нужно ввести размер массива и потом чтобы прога уничтожила елемент с заданым номером... Я сделала эту задачку. Но без функций((... а нужно с функциями а потом нужно еще и меню сделать((
Вот мое:
Код:
#include <cstdlib>
#include <iostream>
#include <ctime>

using namespace std;

int form_mas(int n)
{
int *mas;
mas = new int[100];
srand(time(NULL));
for(int i=0;i<n;i++) mas[i]=rand()%100-50;
cout << endl;  
}

int* print_mas(int n, int *mas)
{
for(int i=0;i<n;i++) cout<<mas[i]<<" ";
cout << endl;
}

int del_mas(int n, int* mas)
{
int p;
    cout << "Enter number of element:";
    cin >> p;

p--;
for(;p<n;p++) mas[p]=mas[p+1];

cout << "Result:";
for(int i=0;i<n-1;i++)
  {
   cout<<mas[i]<<" ";
  }

}

int main()
{
	int n;
	cout<<"N?";cin>>n;
	form_mas(n);
	print_mas(mas,n);
    del_mas(mas,n);
	return 1;
}
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 20.04.2009, 19:17   #2
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Насчет второй задачи. Создай функцию типа void. Туда передай массив и выполни тоже самое. Потом выведи на экран и верну управление функции main.

А первую могу на Си написать, но без меню? Надо?
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.

Последний раз редактировалось MAKEDON; 20.04.2009 в 19:19.
MAKEDON вне форума Ответить с цитированием
Старый 20.04.2009, 19:23   #3
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Цитата:
А первую могу на Си написать, но без меню? Надо?
Если несложно )) напиши пожалуйста
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 20.04.2009, 19:49   #4
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Я сначала неправильно прочитал задание поэтому написал так. Она вставляет на каждую четную позицию массива строку. А времени переделывать нету пока. Если ты не торопишься, я вечером еще посмотрю и кину полный вариант, если не забуду. А если тебе срочно то сама покопайся в коде. Там не так много надо изменить.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
	int a[100][100],i,j,k,N,M;
	srand(time(0));
	scanf("%d %d",&N,&M);
	for(i=0;i<M;i++){
		for(j=0;j<N;j++){
			a[i][j]=rand()%100;
		}
	}
	for(i=0;i<M;i++){
		for(j=0;j<N;j++){
			printf("%4d",a[i][j]);
		}
		printf("\n");
	}
	for(i=0;i<M;i++){
		if(i>0&&(i+1)%2==0){
			M++;
			for(j=M-1;j>i;j--){
				for(k=0;k<N;k++){
					a[j][k]=a[j-1][k];
				}
			}
			for(j=0;j<N;j++){
				a[i][j]=rand()%100;
			}
		}
	}
	printf("\n");
	for(i=0;i<M;i++){
		for(j=0;j<N;j++){
			printf("%4d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
}
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 20.04.2009, 19:56   #5
Olya90
Форумчанин
 
Аватар для Olya90
 
Регистрация: 16.03.2009
Сообщений: 125
По умолчанию

Та я не тороплюсь))... Если будет время напиши пожалуйста))... а я пока посмотрю то что есть
Если помогла нажмите на весы
Olya90 вне форума Ответить с цитированием
Старый 20.04.2009, 20:10   #6
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Вот! Вроде работает по заданию. Только в строчке

for(j=0;j<N;j++){
a[i][j]=0;
}

0 замени на rand()%101;

Я там 0 поставил, чтобы удобнее было проверять.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
	int a[100][100],i,j,k,N,M;
	srand(time(0));
	scanf("%d %d",&N,&M);
	for(i=0;i<M;i++){
		for(j=0;j<N;j++){
			a[i][j]=rand()%100;
		}
	}
	for(i=0;i<M;i++){
		for(j=0;j<N;j++){
			printf("%4d",a[i][j]);
		}
		printf("\n");
	}
	for(i=0;i<M;i+=2){
		if(i>1){
			M++;
			for(j=M-1;j>=i;j--){
				for(k=0;k<N;k++){
					a[j][k]=a[j-1][k];
				}
			}
			for(j=0;j<N;j++){
				a[i][j]=0;
			}
			i++;
		}
	}
	printf("\n");
	for(i=0;i<M;i++){
		for(j=0;j<N;j++){
			printf("%4d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
}
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
интересные проги kipish Софт 85 18.12.2022 01:03
Модернизация проги Rusl92 Общие вопросы Delphi 2 25.11.2008 02:00
Прокси-проги Spooter Софт 3 20.08.2008 10:55
Заморозка проги wwww Общие вопросы Delphi 3 09.10.2007 09:36
мои проги bill Помощь студентам 2 17.07.2007 21:33