Студентам с лабораторными сюда (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 20 Jun 2007.

Thread Status:
Not open for further replies.
  1. Cereus

    Cereus New Member

    Joined:
    9 Nov 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Данный способ основан на использовании двух дополнительных матриц - одна хранит положительные значения из входного массива, а вторая отрицательные. При данном способе можно было бы обойтись и без входного массива, но в ТВОЕМ задании сказано... Короче вот:

    Code:
    # include <cstdio>
    # include <cstdlib>
    # include <iostream>
    
    using namespace std;
    
    int main(){
    cout<<"Введите количество элементов в матрице: ";
    int n=1; //переменная хранящая количество элементов в марице
    cin>>n;
    double mas1[n];//главный массив
    double masOtr[n];//массив для хранения отрицательных значений
    double masPol[n];//массив для хранения положительных значений
    int pol=0,otr=0;//переменные для хранения количества положительных и отрицательных элементов
    for (int i=0;i<n;i++){//начало цикла заполняющего массивы
        cout<<"Вводится элемент №"<<i<<" ";
        cin>>mas1[i];//заполняем основной массив
        if (mas1[i]<0) {masOtr[otr]=mas1[i];otr++;} else {masPol[pol]=mas1[i];pol++;}; //выбираем положительные и отрицательные числа
    }; //конец цикла заполняющего массивы
    cout<<"\nСодержание матрицы до изменения\n";
    for (int i=0;i<n;i++){
    cout<<mas1[i]<<endl; //выводим содержание массива до сортировки
    }
    otr=0;
    for (int i=0;i<n;i++){//начало сортировки массива
        if (i<pol) {mas1[i]=masPol[i];} else {mas1[i]=masOtr[otr];otr++;}; //собственно сортировка массива
                                                                           //отрицательные числа сортируются после всех
    }//конец сортировки массива
    cout<<"\nСодержание матрицы после фильтрации\n";
    for (int i=0;i<n;i++){
    cout<<mas1[i]<<endl; //вывод содержания массива после сортировки
    }
    system ("pause");//пауза для того чтобы посмотреть результат
    return 0;
    }
    
    P.S.
    Обращаюсь к знающим античатовцам: мои познания в C++ весьма скудны и поэтому прошу тех кто знает посмотреть на данный код и оптимизировать его и/или предложить более рациональный способ (мне самому уже интересны варианты решения данной задачи).
     
  2. WALKMAN

    WALKMAN Elder - Старейшина

    Joined:
    30 Dec 2007
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    Дорогие античатовцы, я учу С++ и мне задают лабораторки с задачами по задачнику, автор - С. А. Абраамов. Я бы не сказал что я непонимаю в програмировании, но в етих задачах очень трудно понять что от програмиста хотят :) Так вот ктонибудь сталкивался с етим задачником?
    Преподаватель молчит, говорит студент должен сам все находить и учить, вот например такая задача:
    "Даны натуральные числа k, m, n, символы s1,...,sk,t1,...,tm, u1...,un. Получить по одному разу те символы, которые входят одновременно во все три последовательности"
    И как такое решать ? :)
     
  3. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    WALKMAN, у тебя три массива. Сравниваешь элементы этих массивов между собой, например:
    Code:
    if(s[1] == t[5] && s[1] == u[2])
      printf("Bingo!");
    
    ;)
    з.ы. А препод хороший, правильные вещи говорит :)
     
  4. WALKMAN

    WALKMAN Elder - Старейшина

    Joined:
    30 Dec 2007
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    Меня смущает сам вопрос: "получить по одному разу те символы, которые входят одновременно во все три последовательности." Сильно замысловатый, ну при этом я понял что есть три различных по длине символьных массива и требуеться сравнить между собою все их елементы, но что вывести в результате???
    "получить по одному разу те символы, которые входят одновременно во все три последовательности." :confused:
     
  5. jawbreaker

    jawbreaker Elder - Старейшина

    Joined:
    7 Jul 2008
    Messages:
    156
    Likes Received:
    76
    Reputations:
    3
    Пример:
    abcdfega
    bndada
    aba
    Символ "a" входит во все 3 последовательности 2 раза, тебе нужно его вывести только один раз.
    Код:
    PHP:
    #include <iostream>
    #include <vector>
    #include <list>

    using namespace std;

    int main()
    {
        
    vector<ints(3);
        
    vector<intt(4);
        
    vector<intu(5);
        
        list <
    intres;

        for (
    int i 0s.size(); i++)
            for(
    int j 0t.size(); j++)
                for(
    int k 0u.size(); k++)
                    if(
    s[i] == t[j] == u[k])
                        
    res.push_back(s[i]);
        
        
    res.unique();
        
        for(list<
    int>::const_iterator it res.begin(); it != res.end(); it++)
            
    cout << *it << "\n";
        
    cin.get();
        return 
    0;
    }
     
    #965 jawbreaker, 5 Jan 2009
    Last edited: 5 Jan 2009
  6. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Выводишь номер элемента и его значение. Example:
    Code:
    for(i = 1; i < k; i++)
    {
    	for(j = 1; j < m; j++)
    	{
    		for(o = 1; o < n; o++)
    		{
    			if(s[i] == t[j] && s[i] == u[o])
    			printf("s[%d] = t[%d] = u[%d] = %d\n", i, j, o, s[i]);
    		}
    	}
    }
    
     
  7. WALKMAN

    WALKMAN Elder - Старейшина

    Joined:
    30 Dec 2007
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    С заданием справился, правда была проблемма с выводом самого символа:
    Code:
    printf("s[%d] = t[%d] = u[%d] = %d\n", i, j, o, s[i]);
    
    Символ выодился в "циферном" формате. Весь текст программы получился такой:
    Code:
    #include <stdio.h>
    #include <string.h>  
    #include <iostream.h>  
    int main ()  
    {  
    char s[1000], t[1000], u[1000]; 
     int i, j, o;    
    printf ("Vvedite stroku s: \n");  
    gets(s);  
    printf ("Vvedite stroku t: \n");  
    gets(t);  
    printf ("Vvedite stroku u: \n");  
    gets(u);    
    for(i = 0; i < strlen(s); i++)  
    {  	
        for(j = 0; j < strlen(t); j++)  	
             {  		
              for(o = 0; o < strlen(u); o++)  		
                   {  			
                    if(s[i] == t[j] && s[i] == u[o])
       	      {printf("s[%d] = t[%d] = u[%d] =", i, j, o); cout<<s[i]<<endl;}  
                   }  	
             }  
    }    
    getch ();  
    return 0;
    }
    
    п. с. А задачи всеравно непонятные ;)
     
  8. reza4ok

    reza4ok New Member

    Joined:
    3 May 2008
    Messages:
    17
    Likes Received:
    1
    Reputations:
    0
    Привет всем, нужна помощ с лабораторной работой по С++... за помощ поставлю +++
    Задание:
    Дана целочисленная квадратная матрица. Определить:
    1. максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы;
    2. произведение элементов в тех строках, которые не содержат отрицательных элементов.
    Сделать нужно динамическим масивом. Вот коечто пытался сделать:
    Code:
    #include<iostream.h>
    #include<iomanip.h>
    void main()
    {
    	int a[3][3],i,j;
    	for(i=0;i<3;i++)
    	{
    		for(j=0;j<3;j++)
    		{
    			cout<<"a["<<i<<","<<j<<"]=";
    			cin>>a[i][j];
    		}
    	}
    	for(i=0;i<3;i++)
    	{
    		for(j=0;j<3;j++)
    		{
    			cout<<setw(3)<<a[i][j];
    			cout<<endl;
    		}
    	}
    }
    Это только ввод и вывод матрицы, а вот как порешать два задание и тем более выделить под это всё память незнаю...
     
  9. k1113r

    k1113r Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    23
    Likes Received:
    27
    Reputations:
    0
    Привет всем, нужна помощ по С++ :
    Нужен алгоритм, который переводит число из десятичной системы в двоичную и наоборот. Проблема в том, что в двоичном коде надо произвести операции, поэтому типы везде должны быть Integer.
     
  10. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    вроде так:
    Code:
            int res = 1;
            for(i = 0; i < 3; i++)
            {
                    for(j = 0; j < 3; j++)
                    {
                            if(A[i][j] >= 0)
                            {
                               res =res*A[i][j];
                               str = i;
                            }
                            else
                                    break;
                    }
            }
    
    А вот с первым заданием хз...я забыл что такое главная диагональ :) Это та, которая слева направо или наоборот? =)
    Если первое, то вот это:
    Code:
            max = A[0][0];
            for(i = 0; i < M; i++)
            {
                    for(j = 0; j < M; j++)
                    {
                            if(i != j && j>i)
                            {
                               res += A[i][j];
                               max = res;
                               break;
                            }
                    }
            }
    
    суммирует(должна :)) элементы диагонали, лежащей сверху главной :)
     
    #970 criz, 6 Jan 2009
    Last edited: 6 Jan 2009
    1 person likes this.
  11. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    click :)
     
    1 person likes this.
  12. frostJKE

    frostJKE New Member

    Joined:
    15 May 2008
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    Помогите пожалуйста решить лабу на С++:
    Условие:
    Ввести строку с клавиатуры. Проверить является ли она вещественным числом.
     
    #972 frostJKE, 6 Jan 2009
    Last edited: 6 Jan 2009
  13. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    frostJKE, http://forum.antichat.ru/showthread.php?p=937000
     
  14. k1113r

    k1113r Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    23
    Likes Received:
    27
    Reputations:
    0
    возникла небольшая проблема надо побитово перемножить 2 числа (тоесть в двоичной системе) и перевести обратно
     
    1 person likes this.
  15. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Побитовое умножение это &.
    Узнаешь результат
    Code:
    A & B
    и переводишь его в десятичное
     
  16. Nikodashka

    Nikodashka New Member

    Joined:
    7 Jan 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Составить блок-схему алгоритма и программу ввода и обработки текста из нескольких предложений согласно заданию. При этом считать, что число предложений и число строк могут не совпадать, каждое слово находится целиком в одной строке, ввод строки завершается нажатием клавиши ENTER, точка – конец предло-жения.Найти слово, которое встречается в каждом предложении. Если таких слов нет, то вывести соответствующее сообщение
     
  17. criz

    criz Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    2 Nikodashka
    Хотя бы указал(а) какой язык используется.
     
  18. ankden

    ankden New Member

    Joined:
    28 Apr 2008
    Messages:
    15
    Likes Received:
    0
    Reputations:
    0
    помогите плиз на си написать прогу: выбрать идущие подряд тойки упорядоченных цифр по возрастаню.
     
  19. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Это битовое И. Никак не умножение.
     
  20. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    что за тойки?
     
Thread Status:
Not open for further replies.