
25.04.2010, 22:03
|
|
Новичок
Регистрация: 03.03.2010
Сообщений: 1
С нами:
8521738
Репутация:
0
|
|
выручите плиз)) в четеверг лаба будет, делаю дома заранее, чтобы долгов небыло и чтобы во всем самому разбираться... но тут пропустил пару занятий по уважительной причине и не особо понял матерьял по указателям в СИ, поэтому прошу помощи.
вобщем, лаба про функции и про указатели.
задание такое:
написать программу сортировки массива строк, ввод данных сортировку и вывод результатво оформить в виде функциий.
использовать указатели.
вариант ** : расположить строки по возрастанию количества цифр в строках.
то что я написал <помощь и состоит в том чтобы исправить этот бред до рабочего состояния>
Код:
#include <stdio.h>
#pragma hdrstop
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#pragma argsused
int in (char *str, int i)
{
printf ("\n Enter %d string", i);
gets(str);
return (str);
}
void out (char *str)
{
printf ("\n String %s", str);
}
void main ()
{
char *s[10], *p;
int i, j, k[10], m=0, str[10], l;
for(i=0; i<10; i++)
{
s[i]=(char *) malloc (80);
str[i]=in(s[i], i);
}
/*
k - массив в котором будут собранны количества цифр в строке, т.е. к[6]=5 значит что в строке нумбер шесть встречалось 5 цифр. идея в том чтобы потом при помощи этого массива переменять указатели s[i] в соответствии масиву К НЕ трогая сами строки.
*/
for(i=0; j<10; i++)
{
k[i]=0;
}
for (i = 0; i <= 9; i++)
{
l=strlen(str);
for(j=0; j<l; j++)
{
if(str[i][j]>='0' && str[i][j]<='9')
{
k[i]=k[i]+1;
}
}
}
for (i = 9; i>0; --i)
{
for( j=0; j<10; j++)
{
if (k[j]>k[j+1])
{
m=s[i];
s[i]=s[j];
s[j]=m ;
}
}
}
printf("\n Sort. mass");
for (i=0; i<10; i++)
{
out(s[i]);
free(s[i]);
}
getch();
}
|
|
|