Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> парочка простеньких задачек по с++, массивы и строки 
:(
    Опции темы
тобер
Дата 10.11.2005, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.11.2005

Репутация: нет
Всего: нет



магёт быть кто нить подскажет... smile
№1
в каждом столбце и каждой строке матрицы а(n,n) содержиться строго по одному нулевому элементу. перестановкой строк добиться расположения всех нулей по главной диагонали матрицы.

вот что я по быстрому наклепал:
Код


#include <stdio.h>
#include <conio.h>

int i=0;
int n=0;
int j=0;
int t=0;int t1=0;int buf=0;



int PrintArray(int array[100][100], int x)
{
for (i=0;i<x;i++)
{
printf(" \n");
for (j=0;j<x;j++)
{

printf("%d ",array[i][j]);
}
}return 0;
};

void main()
{
int a[100][100];
printf("Vvedite razmernost massivov \n");
scanf("%d",&n);
// Вводим исходный массив A
printf("Vvodim massiv A: \n");
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
printf("vvedite element massiva: \n");
scanf("%d",&a[i][j]);
}

PrintArray(a,n);
printf("\n");
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{ if(a[i][j]=0)
{t=j;t1=i;
for (i=0;i<n;i++)
j=0;j++;
buf=a[t1][j];
a[t1][j]=a[t][j];
a[t][j]=buf;


}
}

PrintArray(a,n);
}








строки не помню ваабще...
№2 В заданном тексте найти самое длинное слово и самую длинную фразу.

№3 в тексте пропущены некоторые слова и словосочетания. они есть в отдельном списке в том порядке в котором должны быть вставлены. места вставки отмечены символом $ . откорректировать текст.
PM MAIL   Вверх
nikitao
Дата 11.11.2005, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



тобер
По поводу 2 и 3.Что непонятно?Если все ,то это в центр помощи,если нет ,то предложите свои идеи,а с проблемными местами мы вам поможем smile



--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
тобер
Дата 11.11.2005, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.11.2005

Репутация: нет
Всего: нет



а по поводу #1?
PM MAIL   Вверх
nikitao
Дата 11.11.2005, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Цитата
а по поводу #1?

Лично я не понял ,что тебе надо в 1.Ты хочешь что бы мы проверили правельность кода?



--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
BreakPointMAN
Дата 11.11.2005, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



в #2 можно функцией strtok воспользоваться, например...

в #3 тоже не особо сложно... есть строка с исходным текстом, есть массив строк с словами для вставки в первую строку... выделяешь память, достаточную для того, чтобы разместить там результат... заводишь переменную-счетчик вставленных слов... потом бежишь по строке с исходным текстом, ищешь очередной "$"... натыкаешься - в строку с результатом дописываешь часть строки с исходным текстом до символа "$", затем ту строку из массива, которая соответствует текущему значению переменной-счетчика... увеличиваешь счетчик, если строки из массива не кончились... и бежишь в поисках символа "$" дальше, но не с самого начала, а со следующей позиции... вот... примерно так... ну + проверки там всякие...


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
qwartal
Дата 12.11.2005, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.11.2005

Репутация: нет
Всего: нет



Доброго времени суток всем!!!! Друзья помогите пожалуйста решить задачу.

Составить программу, которая содержит динамическую информацию о наличии автобусов в автобусном
парке. Сведения о каждом автобусе включают:

* номер автобуса;
* фамилию и инициалы водителя;
* номер маршрута.

Прошу написать хотя бы начало данной задачи.
Заранее благодарен!
С уважением, Денис.

PM MAIL   Вверх
nikitao
Дата 12.11.2005, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



qwartal,одна тема-один вопрос!!!!

Это сообщение отредактировал(а) nikitao - 12.11.2005, 22:25


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
тобер
Дата 13.11.2005, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.11.2005

Репутация: нет
Всего: нет



в номер 1 она не пашет!
прошу подсказать ошибку(правда чувствую что там ОШИБКА)
С strtok псб в мсднку закинул мысль пошла... =) псб (я ж говорил что по строкам ни одной функции не помню)
а с третьей там запара какая-то, там енто всё ишо динамически приходится (а я этого страсть как не люблю)и не идёт млин мысля хоть ты тресни...
подскажите с третьей плзззззззз!!!
Добавлено @ 00:23

2 BreakPointMAN
с третьей лично у мя не так всё просто пришлось создать ишо один массив строк...
постепенно вырезать из первого и вставлять в новый...
дабы в изначальном каждый $ оставался первым каждый раз...

может есть функция прямой замены символа на строку?
помоги...

PM MAIL   Вверх
BreakPointMAN
Дата 13.11.2005, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



тобер, как именно - в каком виде - у тебя задаются исходные данные в 3 задаче?


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
тобер
Дата 13.11.2005, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.11.2005

Репутация: нет
Всего: нет



BreakPointMAN
да как угодно я чуть что сам доделаю можно считывать из файла, можно вводить с клавы ..., можно ваще константной строкой сразу задать вставляемые фразы я так думаю лучше всего будет ввиде массива строк делать


Это сообщение отредактировал(а) тобер - 13.11.2005, 03:00
PM MAIL   Вверх
darkart
Дата 13.11.2005, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 2
Всего: 31



По поводу первой:
Код

#include<stdio.h>
const int n=3;
void InputMatrix(int Matrix[n][n])
{
    printf("Please enter a matrix(%dx%d):\n",n,n);
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            scanf("%d",&Matrix[i][j]);
}
void PrintMatrix(int Matrix[n][n])
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n-1;j++)
            printf("%d",Matrix[i][j]);
        printf("%d\n",Matrix[i][n-1]);
    }
}
void Rearrangement(int Matrix[n][n])
{
    int tmp;
    for(int i=0;i<n;i++)
    {
        int j=i;
        while(j<n&&Matrix[j][i]!=0)j++;
        int k=0;
        for(k=0;k<n;k++) 
        {
            tmp=Matrix[i][k];
            Matrix[i][k]=Matrix[j][k];
            Matrix[j][k]=tmp;
        }
    }
}
int main()
{
    int Matrix[n][n];
    InputMatrix(Matrix);
    printf("Source matrix:\n");
    PrintMatrix(Matrix);
    Rearrangement(Matrix);
    printf("Null-diagonal matrix:\n");
    PrintMatrix(Matrix);
    return 0;
}

PM MAIL WWW ICQ Skype GTalk   Вверх
тобер
Дата 13.11.2005, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.11.2005

Репутация: нет
Всего: нет



darkart
большое спасибо, оказалось что мне для счастья не хватало буквально одной строчечки : while(j<n&&Matrix[j][i]!=0)j++;
smile

PM MAIL   Вверх
BreakPointMAN
Дата 13.11.2005, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



#3 лови...
сразу предупреждаю - не проверял!!!
возможно, работает криво или вообще не работает... smile
простора для оптимизации - море.
лень было ...
но идея, я думаю, понятна будет.
если непонятна - спрашивай...
Код

#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main()
   {
    char *SourceText="This is $ 1st $ of this $!";
    char *Words[]={"my","test","program"};

    // Подсчет - сколько мы имеем слов для замены?
    int WordsNum=sizeof(Words)/sizeof(Words[0]);
    // Подсчет - длина исходного текста + нуль-символ
    int S=strlen(SourceText)+1;
    // Подсчет - а сколько нам надо места всего?
    for(int i=0; i<WordsNum; i++)
       {
        S+=strlen(Words[i]); // учитываем длину слова-заменителя
        S--; // и не учитываем заменяемый символ '$'
       }
    // Выделим память...
    char *NewText=(char*)malloc(S);
    memset(NewText,'\0', S);

    int CurrentWord=0, iBeg=0, iPos=0;

    // Пробегаемся по всем символам исходного текста
    for(int i=0; i<strlen(SourceText); i++)
       {
        if(SourceText[i]=='$') // нашли очередной '$'
           {
            // Сначала скопируем часть строки до символа '$'
            strncpy(NewText+iPos, SourceText+iBeg, i-iBeg);
            iPos+=(i-iBeg);
            // Затем скопируем соответствующее символу '$' слово
            strcpy(NewText+iPos,Words[CurrentWord]);
            iPos+=strlen(Words[CurrentWord++]);
            iBeg=i+1;
            if(CurrentWord>=WordsNum) break;
           }
       }
    // Копируем то, что осталось...
    strncpy(NewText+iPos, SourceText+iBeg, strlen(SourceText)-iBeg);

    printf("%s",NewText);
    free(NewText);
    getch();
    return 0;
   }



--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
тобер
Дата 13.11.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.11.2005

Репутация: нет
Всего: нет



BreakPointMAN
darkart
nikitao
всем БОЛЬШОЕ СПАСИБО!!!
PM MAIL   Вверх
darkart
Дата 13.11.2005, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 2
Всего: 31



Всегда пожалуйста smile
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2884 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.