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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 13:17   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как правильно написать указатель чтобы он, как не странно, указывал на массив?
Если брать именно твой вариант то так:
Код:
#include <stdio.h>
#include <string.h>
const int n = 50;
main()
{

int mas[n], *Q, a=3, b=5, c, i;    
Q=&mas;
int *A = (int*) malloc(sizeof(int)*c);

for(i=0;i<n;i++)     Q[i] = i;

for(i=0;i<n;i++) printf("%d, ", Q[i]);
printf("\n");

return ;

for(i=0;i<n;i++)
{
	if(Q[i]%a!=0 && Q[i]%b!=0)
	{
		A[c]=Q[i];
		printf("%d ", A[c]);
	}
}
//getchar();
}
Цитата:
И как сделать чтобы элементы массива начинались с единицы, сдвигом, наверно?
Доходчиво объясни зачем это нужно. Только убедительно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2013, 17:27   #12
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Так?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
const int n = 51;
int main()
{
setlocale(LC_ALL, "rus");
int mas[n], *A, *B, a=3, b=5, c, i;	
A = (int*) malloc(sizeof(int)*c);
B=mas;
printf("Элементы массива:\n");
for(i=1;i<n;i++) /* заполняю массив*/
    {
    B[i] = i;
    printf("%d ", B[i]); // вывожу элементы на экран
    }
printf("\n\n");
printf("Элементы массива не кратные 3 и 5:\n");
for(i=1;i<n;i++)
{
	if(B[i]%a!=0 && B[i]%b!=0)
	{
		A[c]=B[i];
		printf("%d ", A[c]);
	}
}
getchar();
}
East Undia Trading вне форума Ответить с цитированием
Старый 01.12.2013, 17:31   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чего спрашиваешь? Запусти - узнаешь )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2013, 18:00   #14
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Stilet, ухаха.То что правильно работает - я вижу, а правильно ли я с указателями работаю?
Кстати, у меня есть похожее задание: Заменить все четные элементы массива А (19) на их квадраты, нечетные удвоить. Проверить, изменилась ли сумма элементов массива.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
const int n =20 ;
int main()
{
setlocale(LC_ALL, "rus");
int mas[n], *A, a=0, b=0, c=0, d=0,  t=2, g=0, z=0, i;
A=mas;
printf("Заданые элементы массива: ");	
for(i=1;i<n;i++) // задаю массив, вывожу элементы на экран
    {
	A[i] = i;
	printf("%d ", mas[i]);
	a = a + A[i]; // сумма элементов массива
    }
    printf("\n");
    printf("Сумма элементов массива: %d", a);
    printf("\nЧетные элементы массива, возведенные в квадрат: ");
    for(i=1;i<n;i++)
    {
    	if(A[n]%t==0)
    	{
    		printf("\n%d", A[i], A[i]=A[i]*A[i]);
    		b= b + A[i];
    	}
    }
    printf("\nНечетные элементы массива, умноженные на два: ");
for(i=1;i<n;i++)
{
	if(mas[i]%t!=0)
	{
		printf("\n%d", A[i], A[i]=A[i]*2);
		c= c + mas[i];
	}
}

printf("\nСумма элементов полученного массива = %d", d, d=b+c);
if(a==d)
printf("\nСумма элементов не изменилась");
else
if(d>a)
printf("\nСумма элементов массива стала больше на %d", g, g=d-a);
else
printf("\nСумма элементов уменьшилась на %d", z, z=a-d);
getchar();
}
Вот здесь, программа не правильно определяет четные числа, например, я вижу в командной строке 25, значит он пятерку в квадрат возвел, а она не четная.

Последний раз редактировалось Stilet; 01.12.2013 в 18:03.
East Undia Trading вне форума Ответить с цитированием
Старый 01.12.2013, 18:07   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а правильно ли я с указателями работаю?
А это ты можешь проверить только в отладке, или если программа отработала верно, и не оставила после себя занятой памяти.
Цитата:
программа не правильно определяет
Я тебя разовчарую. Программа вообще не верно работает )
Смотри внимательно сюда:
Цитата:
for(i=1;i<n;i++)
{
if(A[n]%t==0)
Увидел нестыковку?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2013, 19:53   #16
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Stilet, ой, точно ведь, а следующая проверка уже верна.Все остальное верно, разве нет?Думаю, да.
East Undia Trading вне форума Ответить с цитированием
Старый 01.12.2013, 20:20   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
разве нет?Думаю, да.
Ответ тот-же: Запусти - узнаешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2013, 20:57   #18
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Stilet, пишет то что нужно.
East Undia Trading вне форума Ответить с цитированием
Старый 08.12.2013, 20:20   #19
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Поднимаю тему, так как решение забраковали.
Задание (1): удалить из массива В (50) все элементы, кратные 3 или 5.
Решение:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
const int n = 51;
int main()
{
setlocale(LC_ALL, "rus");
int mas[n], *A, *B, a=3, b=5, c, i;	
A = (int*) malloc(sizeof(int)*c);
B=mas;
printf("Элементы массива:\n");
for(i=1;i<n;i++) /* заполняю массив*/
    {
    B[i] = i;
    printf("%d ", B[i]); // вывожу элементы на экран
    }
printf("\n\n");
printf("Элементы массива не кратные 3 и 5:\n");
for(i=1;i<n;i++)
{
	if(B[i]%a!=0 && B[i]%b!=0)
	{
		A[c]=B[i];
		printf("%d ", A[c]);
	}
}
getchar();
}
Проблема в том, что "читернуть" и запилить новый массив- не вариант.Мне остается в данной задаче только найти способ, как удалить отобранные мною по условию элементы?Какие есть способы, варианты, предложения?

Последний раз редактировалось Stilet; 08.12.2013 в 21:00.
East Undia Trading вне форума Ответить с цитированием
Старый 08.12.2013, 20:34   #20
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,316
По умолчанию

Посмотрите 8 и 10 посты. Там как раз элементы удаляются из массива (затираются), а не заносятся в новый.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить элементы массива. Маx Паскаль, Turbo Pascal, PascalABC.NET 7 24.09.2012 04:47
По массивам, SOS! из целочисленного массива удалить из массива элементы, встречающиеся менее 3-х раз prelest' Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2011 22:37
удалить из массива уникальные элементы хочу узнать Помощь студентам 2 26.09.2010 19:22
Как удалить нулевые элементы из массива? Diman_kemNVK Помощь студентам 2 13.04.2010 15:54
Удалить элементы массива Маськ@ Паскаль, Turbo Pascal, PascalABC.NET 1 21.12.2008 17:46