Показать сообщение отдельно

  #2740  
Старый 25.04.2010, 22:03
Ditol
Новичок
Регистрация: 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();
	}
 
Ответить с цитированием