
22.12.2009, 12:42
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
Сообщение от Semus
Здравствуйте, помогите мне пожалуйста.
Необходимо на С реализовать следующую программу: из введенной пользователем строки выбрать самое длинное и самое короткое слово.
Но после нескольких неудачных попыток я понял, я что со стороками у меня все глухо.Заведомо благодарю всех откликнувшихся
PHP код:
#include<string.h>
#include <stdio.h>
void main(void)
{
char *string = "a asd sss dasq";
char *s;
char *min;
char *max;
int i,j,h;
s = strtok(string," ");
i = strlen(s);
h = i;
while (s !=NULL)
{
s = strtok(NULL," ");
if(s!=NULL)
{
j=strlen(s);
if (i<j)
{
i=j;
max = s;
}
if (h>j)
{
h=j;
min = s;
}
}
}
printf("Min %s len - %d",min,h);
printf("Max %s len - %d",max,i);
}
Как то так. Не проверял но смысл как это делать вроде понятен.
Последний раз редактировалось St0nX; 22.12.2009 в 12:44..
|
|
|

22.12.2009, 11:19
|
|
Участник форума
Регистрация: 31.10.2007
Сообщений: 213
Провел на форуме: 394522
Репутация:
14
|
|
Помогите дописать на JAVA два метода :
1 - сравнение дат (равно , до , после)
2 - вычисление количества дней между датами
|
|
|

22.12.2009, 13:32
|
|
Новичок
Регистрация: 11.06.2007
Сообщений: 2
Провел на форуме: 3946
Репутация:
0
|
|
Всем привет, понимаю точ то не сюда пишу но всёже, мне надо написать сетевой органайзер на Visual Studio C++ помощи не прошу с формами с кнопочками и т.д но вот беда я нечего не знаю по поводу как так кодить, раньше баловался на делфи тама всё просто было, попробовал тоже самое провести на этой среде нечего конечно же не получилось, помогите советом
|
|
|
Помогите разобраться с кодом |

22.12.2009, 21:17
|
|
Новичок
Регистрация: 27.03.2009
Сообщений: 12
Провел на форуме: 17616
Репутация:
0
|
|
Помогите разобраться с кодом
Здравствуйте, помогите разобраться, почему не компилируется следующая программа (вернее компилируется, но во время исполнения вылетает ошибка)
Код:
//определяем число вхождений подстроки в введенную пользователем строку
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
int main ()
{
//вводим строку в которой осуществляем поиск
char * stroka;
printf ("Vvedite stroku:");
gets (stroka);
printf ("%s\n", stroka);
// вводим строку которую будем искать
char * iskom;
printf ("Vvedite iskomuy stoku: ");
scanf ("%s", &iskom);
//указатель на на номер на найденный номер
char * point = 0;
//следующая переменная - счетчик
int i = 0;
for (;;)
{
point = strstr(stroka, iskom);
stroka=point+1;
if (point==NULL) {break;}
i++;
};
printf ("kolichestvo vhogdenii = %d", i);
return 0;
}
Заранее благодарю
|
|
|

23.12.2009, 01:28
|
|
Новичок
Регистрация: 11.06.2007
Сообщений: 2
Провел на форуме: 3946
Репутация:
0
|
|
я конечно не совсем силён и могу ошибаться, но тебе надо выделять память...
типо вместо char * stroka писать char * stroka new char[256];
и чтобы вот такова бреда не было printf ("kolichestvo vhogdenii)
подрубай locale.h и в main(){setlocale(LC_ALL, "RUSSIAN"); код... printf("Привет")}
а по поводу выделения памяти я не знаю как на си сделать malloc юзай хотя у меня так заработало как первый раз писал тока вот цикл странный зацикленный какой то)) с циклом извиняй помочь не могу, и чтобы строку к строке прировнять надо по моемому перегрузку оператора сделать... хотя я дилетант тоже не ругайте меня ))
|
|
|

23.12.2009, 21:51
|
|
Новичок
Регистрация: 27.03.2009
Сообщений: 12
Провел на форуме: 17616
Репутация:
0
|
|
Сообщение от Trotter
я конечно не совсем силён и могу ошибаться, но тебе надо выделять память...
типо вместо char * stroka писать char * stroka new char[256];
и чтобы вот такова бреда не было printf ("kolichestvo vhogdenii)
подрубай locale.h и в main(){setlocale(LC_ALL, "RUSSIAN"); код... printf("Привет")}
а по поводу выделения памяти я не знаю как на си сделать malloc юзай хотя у меня так заработало как первый раз писал тока вот цикл странный зацикленный какой то)) с циклом извиняй помочь не могу, и чтобы строку к строке прировнять надо по моемому перегрузку оператора сделать... хотя я дилетант тоже не ругайте меня ))
Верно подмечено, ты "не совсем силен" . Ты какой-то бред несешь: "память выделять", "перегрузку операторов делать ". И не нужно подрубать "locale.h", и прочее что ты там написал. Все решилось проще и самостоятельно через пол часа после появления поста:
Код:
//Задание №1
//определяем число вхождений введеного //пользователем слова в введеную пользователем строку
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
int main ()
{
char stroka[300]; //данный массив предназначен для хранения введеной пользоватлем строки, объем до 300символов
char * pStr = stroka; //этот указатель используется для поиска данных, ему дается адрес первого элемента
//вводим строку из которой осуществляем поиск
printf ("Vvedite stroku: "); //просим пользователя ввести строку
gets (stroka); //пользователь вводит строку
// вводим строку которую будем искать
char iskStroka[300]; //массив предназначенный для хранения искомой строки
char * iskom = iskStroka; //этот указатель используется для поиска и подсчета числа вхождения подстрок в строку
//вводим искомую подстроку
printf ("Vvedite iskomuy slovo: "); //просим пользователя ввести искомое слово
scanf("%s", iskStroka);// ввод искомого слова
char * point = 0;//указатель на на номер на найденый номер
int i = 0; // переменная - счетчик, используем для подсчета кол-ва вхождений подстроки в строку
// следующий цикл обеспечивает подсчет вхождений подстроки в строку
do //далее начинается вечный цикл с постусловие
{
point = strstr(pStr, iskom);//ищем позицию вхождения подстроки в строку
pStr=point+1; //при помощи указателя как-бы обрезаем длинну строки,
//что при следующем цикле осуществился поиск данных
//с позиции найденой строки+1.
//Если не поставить "+1" цикл будет бесконечен, так как постоянно
//будет находиться первое вхождение с которого теперь начинается адрес поискового указателя pStr
if (point==NULL) {break;}; //если на очередном шаге не было найдено вхождения - прерываем цикл
i++;
}
while (true);//цикл вечен, если его не прервать
//закончили подсчет вхождений строки в подстроку
printf ("kolichestvo vhogdenii = %d\n", i);// выводим результат на экран
system ("PAUSE"); //ждем от пользователя нажатия какой-либо клавиши
return 0;
}
|
|
|

23.12.2009, 13:52
|
|
Новичок
Регистрация: 22.12.2009
Сообщений: 1
Провел на форуме: 5660
Репутация:
0
|
|
Описание классов в C++
Пожалуйста, подскажите как описать класс «Экзаменационная ведомость», частью которого является класс «Студент», хранящий информацию о студенте и его оценке на экзамене. Предусмотреть возможность задания произвольного количества студентов, сортировки студентов по фамилии, вычисления среднего балла за экзамен, а также вывода на экран количества различных оценок. Вот код, который я смог написать, но это еще далеко от идеала:
Код:
#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <vcl.h>
#pragma hdrstop
#include <cstdlib>
#include <conio.h>
#pragma argsused
using namespace std;
class ekzam{
public:
class stud{
string name;
string famil;
string otches;
int otsenka;
} temp;
int col;
int srb;
int *values;
int count;
ekzam(int col){
count=col;
values=new int[count];
}
~ekzam(){
delete[]values;
}
void Get(int i){
for(i=0;i<col;i++){
cin>>stud[i].name;
}
}
};
main()
{
int n,i;
cin>>n;
ekzam students(n);
system("PAUSE");
return EXIT_SUCCESS;
}
Последний раз редактировалось slesh; 23.12.2009 в 14:13..
|
|
|

23.12.2009, 19:56
|
|
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
Провел на форуме: 1180737
Репутация:
180
|
|
шот какоето безумие внутри класса создавать еще клас, тут логически правильней было бы, создать класс студен со следующими полями:
ФИО
ГРУППА
Хеш таблица /* Ключ: название экзамена, значение: оценка*/
/* не зубудь что вместо оценки может быть неявка, ее можно обозначить например как -1, а 0 - это оценки еще нет */
...
А потом создать класс ведомость:
Вектор <Студент>
...
ну и добавить в этот клас всякие приблуды:
добавление студента в ведомость,
проверка чтобы каждый студент присутствовал только один раз в одной ведомости
сортировка вектора по ФИО
Выставление оценки студенту в ведомости
так будет гораздо правильней
Последний раз редактировалось cupper; 23.12.2009 в 20:00..
|
|
|

23.12.2009, 20:52
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
не правильно. оценка хранится не в студенте. и группа в студенте - полнейший бред. в жизни разве так?
Описываешь классы ведомость, экзамен, студент, строка ведомости. Ведомость хранить вектор строк ведомости и экзамен, чьи результаты она хранит. Строка ведомости хранит студента, оценку.
вот такая диаграммка как вариант.
[EDIT]
Exam поправил на Subject (дисциплина)
Последний раз редактировалось Ra$cal; 23.12.2009 в 21:02..
|
|
|

23.12.2009, 21:18
|
|
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
Провел на форуме: 1180737
Репутация:
180
|
|
а что хранит класс экзамен ?
Разделение ведомости на ведомость и стока ведомости по абстракции конечно правильней но кому нужна такая детализация ?
Притом исходя из условия то челу нужно всего два класса. Как ты сказал конечно правильней, я просто адаптировал под условия
Последний раз редактировалось cupper; 23.12.2009 в 21:20..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|