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

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

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

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2009, 16:22   #1
SilentM
 
Регистрация: 21.05.2009
Сообщений: 6
По умолчанию Дана матрица символов. Определить строку, в которой максимальное количество букв.

Помогите пожалуйста решить задачу!
На языке си:
Дана матрица символов. Определить строку, в которой максимальное количество букв.
SilentM вне форума Ответить с цитированием
Старый 21.05.2009, 16:50   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
for(i=0,tekcnt=0,k=0; i<m; i++)
 {
 for(cnt = 0, j=0; j<n; j++)
  if(matr[i][j]>='a'&&matr[i][j]<='z') cnt++;
 if(cnt>tekcnt) { tekcnt = cnt; k = i; }
 }
Теперь в k - номер нужной строки.
Это для строчных букв.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.05.2009, 17:49   #3
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

А так для всех)

Код:
for(i=0,tekcnt=0,k=0; i<m; i++)
 {
 for(cnt = 0, j=0; j<n; j++)
  if(matr[i][j]>='a'&&matr[i][j]<='z'||matr[i][j]>='A'&&matr[i][j]<='Z') cnt++;
 if(cnt>tekcnt) { tekcnt = cnt; k = i; }
 }
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 23.05.2009, 13:50   #4
SilentM
 
Регистрация: 21.05.2009
Сообщений: 6
По умолчанию

А подскажите еще плиз как саму матрицу ввести.. Вот че у меня витоге получилось..
Допустим на 1ый вариант для строчных букв:

#include<iostream>
#include<math.h>
using namespace std;
const N=4;
void main()
{int i, tekcnt,k,m,j,cnt,n, matr[N][N];
for (i=0; i<N; i++)
for (j=0; j<N; j++)
{cout<<"matr["<<i<<"]["<<j<<"]=";
cin>>matr[i][j];}
for(i=0,tekcnt=0,k=0; i<m; i++)
{
for(cnt = 0, j=0; j<n; j++)
if(matr[i][j]>='a'&&matr[i][j]<='z') cnt++;
if(cnt>tekcnt) { tekcnt = cnt; k = i; }
}
cout<<k;
}
SilentM вне форума Ответить с цитированием
Старый 23.05.2009, 13:58   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

У вас матрица символов, а вы ее целочисленной сделали.
Надо
Код:
char matr[N][N];
m и n у вас не проинициализированы. Поэтому работать не будет.
Добавьте:
Код:
m=N; n=N;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 23.05.2009, 14:11   #6
SilentM
 
Регистрация: 21.05.2009
Сообщений: 6
По умолчанию

ой точно! спасибо! я забыла что char надо сделать. Я наверное уже всех здесь достала О:-)Только вот теперь вывод не работает. Точнее выводит, но чтото не то.. Вообще получается же букв одинаково во всех строках?? или я и ввожу тоже неправильно?



#include<iostream>
#include<math.h>
using namespace std;
const m=4,n=4;
void main()
{int i, tekcnt,k,j,cnt;
char matr[m][n];
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{cout<<"matr["<<i<<"]["<<j<<"]=";
cin>>matr[i][j];}
for(i=0,tekcnt=0,k=0; i<m; i++)
{
for(cnt = 0, j=0; j<n; j++)
if(matr[i][j]>='a'&&matr[i][j]<='z') cnt++;
if(cnt>tekcnt) { tekcnt = cnt; k = i; }
}
cout<<k;
}
SilentM вне форума Ответить с цитированием
Старый 23.05.2009, 14:17   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Только вот теперь вывод не работает.
У меня все работает.
Цитата:
Точнее выводит, но чтото не то.
Что именно?
Цитата:
Вообще получается же букв одинаково во всех строках??
Это зависит от того, что вы вводите.
Цитата:
или я и ввожу тоже неправильно?
А вы покажите.

ps Код заключайте в теги CODE ("#" на панели в окне редактирования).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 23.05.2009, 14:23   #8
SilentM
 
Регистрация: 21.05.2009
Сообщений: 6
По умолчанию

Я запускаю вот эту самую программу, у меня выдается:
matr[0][0]= ввожу букву
2 и более букв не вводятся, точнее появляется запись
matr[0][0]=zz
matr[0][1]=matr[0][2]=
ну вот, ввела везде по одной букве, это вроде значит, что во всех строках одинаковое число букв. И дальше мне выводится ответ "0".

#include<iostream>
#include<math.h>
using namespace std;
const m=4,n=4;
void main()
{int i, tekcnt,k,j,cnt;
char matr[m][n];
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{cout<<"matr["<<i<<"]["<<j<<"]=";
cin>>matr[i][j];}
for(i=0,tekcnt=0,k=0; i<m; i++)
{
for(cnt = 0, j=0; j<n; j++)
if(matr[i][j]>='a'&&matr[i][j]<='z') cnt++;
if(cnt>tekcnt) { tekcnt = cnt; k = i; }
}
cout<<k;
}
SilentM вне форума Ответить с цитированием
Старый 23.05.2009, 14:26   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

SilentM, вы меня не услышали?
Цитата:
Сообщение от Sazary
ps Код заключайте в теги CODE ("#" на панели в окне редактирования).
Цитата:
Сообщение от SilentM
2 и более букв не вводятся, точнее появляется запись
Потому что у вас массив символов, а не групп символов.
Цитата:
Сообщение от SilentM
ну вот, ввела везде по одной букве, это вроде значит, что во всех строках одинаковое число букв. И дальше мне выводится ответ "0".
У вас задание:
Цитата:
Определить строку, в которой максимальное количество букв.
0 - нулевая строка. Т.к. во всех строках одинаковое количество символов, то он выводит номер первой из них. Все правильно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 23.05.2009, 14:30   #10
SilentM
 
Регистрация: 21.05.2009
Сообщений: 6
По умолчанию

А! все поняла теперь! спасибо большое!!!
за код без тегов извиняюсь..
SilentM вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка символов.Преобразовать строку,заменив в ней каждую из групп стоящих рядом точек одной точкой V I K T O R I Y A Паскаль, Turbo Pascal, PascalABC.NET 1 03.05.2009 09:56
Определить количество вхождений строки S1 в строку S2 Berckyt Microsoft Office Word 5 16.03.2009 00:27
Дана прямоугольная матрица. Определить количество столбцов, произведение элементов которых меньше 5 Sweeney Паскаль, Turbo Pascal, PascalABC.NET 0 10.12.2008 01:41