Pomoc s programováním – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Pomoc s programováním – C / C++ – Fórum – Programujte.comPomoc s programováním – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Lenka
~ Anonymní uživatel
31 příspěvků
15. 3. 2012   #1
-
0
-

Ahoj,

dostali jsme ve škole za úkol naprogramovat pár programů, na zápočet. Jelikož jsem nikdy neprogramovala, tak nevím jak na to. Moje parketa je ekonomika a né toto. Mohl by mi někdo nastínit co s těmito zadáními. Je mi jasné, že mi je asi nenaprogramujete, ale aspon nějaký návod na postup a tak. Moc děkuji. Lenka

zadání :

Vytvořte program, který načte N celých čísel z klávesnice (avšak max. 100). Načtená čísla uloží do statického pole a tato čísla na základě volby uživatele setřídí vzestupně nebo sestupně. Výsledky zobrazí v konzolovém okně, kde byla zadávána jednotlivá čísla.

Vytvořte program, který načte z klávesnice větu, jenž je tvořena znaky (čísla, mezery, velká nebo malá písmena) max. 100 znaků. Tato věta může začínat písmenem, číslem nebo jednou či několika mezerami. Každé slovo musí být odděleno minimálně jednou mezerou. Po načtení program zjistí počet slov ve větě a počet znaků v jednotlivých slovech. Výsledek bude zobrazen podobně jako v programu č. 1.

Vytvořte funkci, která načte do dynamicky přidělené paměti čtvercovou matici řádu N (použijte datový typ int pro toto číslo N) Prvky matice jsou reálná čísla. Dále vytvořte funkci, která sečte dvě čtvercové matice, jež jsou uložené v paměti. Tyto funkce použijte ve vašem programu a výsledky zobrazte na obrazovce.

Nahlásit jako SPAM
IP: 217.117.216.–
Reklama
Reklama
Tukan0
Stálý člen
15. 3. 2012   #2
-
0
-

#1 Lenka
1. načteš čísla do pole a pak to pole s čísly proženeš přes nějaký třídící algoritmus, třeba http://cs.wikipedia.org/wiki/Bublinkov%C3%A9_%C5%99azen%C3%AD

2. prohledáváš danou větu, když narazíš na mezeru tak začíná nové slovo a počítáš znaky od znovu

3. matice jsou pole žejo, a ty pole mezi sebou budeš sečítat

Nahlásit jako SPAM
IP: 188.175.56.–
Lenka
~ Anonymní uživatel
31 příspěvků
23. 3. 2012   #3
-
+1
-
Zajímavé

Napsal by mi ty programy nekdo prosim!!!???? 

Nahlásit jako SPAM
IP: 77.48.70.–
devilfish0
Stálý člen
23. 3. 2012   #4
-
0
-

   

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

void swap(int * a,int *b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}

void selectionSort(int * arr,int arrSize)
{
	int i,j;
	int minIndex;
	for(i = 0;i<arrSize - 1;++i)
	{
		minIndex = i;
		for(j = i + 1;j < arrSize;++j)
		{
			if(arr[j]<arr[minIndex])
				minIndex = j;
		}
		swap(&arr[i],&arr[minIndex]);
	}
}

int main()
{
	int N = 1;
	int * pole = NULL;
	scanf("%d",&N);
	pole = (int *)malloc(N*sizeof(int));
	for(int i = 0;i<N;++i)
		scanf("%d",&pole[i]);
	selectionSort(pole,N);
	for(int i = 0;i<N;i++)
		printf("%d ",pole[i]);
	return 0;
}
#include <stdio.h>
#include <stdlib.h>

double** loadMatrix(int N)
{
	double **matrix = (double**)malloc(N*sizeof(double*));
	for(int i = 0;i<N;++i)
		matrix[i] = (double*)malloc(N*sizeof(double));
	for(int i = 0;i<N;++i)
		for(int j = 0;j<N;++j)
			scanf("%lf",&matrix[i][j]);
	return matrix;
}
double** sumMatrix(double **matrixA,double **matrixB,int N)
{
	double **matrixC = (double**)malloc(N*sizeof(double*));
	for(int i = 0;i<N;++i)
		matrixC[i] = (double*)malloc(N*sizeof(double));
	for(int i = 0;i<N;++i)
		for(int j = 0;j<N;++j)
			matrixC[i][j] = matrixA[i][j] + matrixB[i][j];
	return matrixC;
}
void printMatrix(double **matrix,double N)
{
	for(int i = 0;i<N;++i)
	{
		for(int j = 0;j<N;++j)
			printf("%lf",matrix[i][j]);
		printf("\n");
	}
}

int main()
{
	int N = 0;
	double **matrixA = NULL;
	double **matrixB = NULL;
	double **matrixC = NULL;

	scanf("%d",&N);

	matrixA = loadMatrix(N);
	matrixB = loadMatrix(N);
	matrixC = sumMatrix(matrixA,matrixB,N);
	printMatrix(matrixC,N);

	return 0;
}
Nahlásit jako SPAM
IP: 188.121.172.–
Lenka
~ Anonymní uživatel
31 příspěvků
23. 3. 2012   #5
-
0
-

Ju dekuju, ale nevim jesli to dokazu vysvetlit nejsou i nejake jednudusii se zakladnimi prikazi a nebo nejak to okomentovat kuju moc.

Nahlásit jako SPAM
IP: 77.48.70.–
devilfish0
Stálý člen
23. 3. 2012   #6
-
0
-

Selection sort - jednoduchy sort, pracuje tak ze vzdy prechadza cely zvysok pola najde najmensi prvok a ten da na zaciatok toho zvysku. Toto opakuje az kym nie je cele pole usporiadane.

loadMatrix - kedze matica ma dva rozmery, alokujes si dvojrozmerne pole, takze potrebujes pointer na pointer (dve hviezdicky) double **matrix

sumMatrix - sucet dvoch matic spravis tak ze scitas vsetky prvky rovnakych indexov tj pre vsetky i,j Cij = Aij + Bij . Takze tam je na to ten cyklus s jednym vnorenym cyklom.

printMatrix - v cykle vypise vsetky prvky matice

Aj by som ti to okomentoval ale nejde mi editovat prispevok....

Nahlásit jako SPAM
IP: 188.121.172.–
meqi+1
Newbie
23. 3. 2012   #7
-
0
-

Takže taky přispěju    A tady jsem ti udělal 1. zadání (je to v c++) :

#include <iostream>
#include <algorithm>

using namespace std;

// predikaty
int sestupne(int i, int j) { return i > j; }
int vzestupne(int i, int j) { return i < j; }
void vypis(int i) { cout << i << ", "; }

int main()
{
    // staticke pole cisel (max 100)
    int cisla[100];
    int aktualniPoziceVPoli = 0;

    do
    {
        // zepta se na cislo a vlozi nove cislo z konzole do pole
        cout << "Zadejte " << (aktualniPoziceVPoli + 1) << ". cislo: ";

        int cislo;
        cin >> cislo;

        // pokud se zada cislo 0, tak se ukonci cyklus zadavani cisel
        // pokud se radek zakomentuje, tak je nutne nacist vsech 100 cisel
        if (!cislo) break;

        // prida cislo do pole
        *(cisla + aktualniPoziceVPoli++) = cislo;
    }
    // probiha tak dlouho, dokud se nezaplni pole
    while (aktualniPoziceVPoli < sizeof(cisla));

    // menu pro volbu serazeni a vypis
    int volba;
    cout << "\nJak chcete pole setridit:\n";
    cout << "1) vzestupne\n2) sestupne\n";
    cout << "Vase volba: ";
    cin >> volba;

    if (volba == 1)
    {
        sort(cisla, cisla + aktualniPoziceVPoli, vzestupne);
    }
    else sort(cisla, cisla + aktualniPoziceVPoli, sestupne);

    for_each(cisla, cisla + aktualniPoziceVPoli, vypis);

    cin.get();
    return 0;
}
Nahlásit jako SPAM
IP: 213.168.183.–
ingiraxo+15
Grafoman
23. 3. 2012   #8
-
0
-

A já jsem udělal příklad druhý =) 

#include <iostream>
#include <string>

using namespace std;

int main()
{
    // pole pro text
    string text;

    // zada vetu z konzole
    cout << "Zadejte vetu: ";
    getline(cin, text);

    int pocetSlov = 1; // pocet vsech slov
    int delkaAktSlova = 0;

    // projde vetu po pismenech
    for (string::const_iterator it = text.begin(); it != text.end(); it++)
    {
        // pokud se vyskytne mezera
        if (*it == ' ')
        {
            // vypise delku predchoziho slova
            cout <<  " (" << delkaAktSlova << ")\n";

            pocetSlov++;
            delkaAktSlova = 0;
        }
        else // jinak vypisuje po pismenech vetu
        {
            delkaAktSlova++;
            cout << *it;
        }
    }
    // vypise delku posledniho slova a pocet vsech slov
    cout <<  " (" << delkaAktSlova << ")\n";
    cout << "Pocet slov: " << pocetSlov;

    cin.get();
    return 0;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
ingiraxo+15
Grafoman
23. 3. 2012   #9
-
0
-

noo a aby jsme to měli kompletní, tak jsem udělal ten poslední úkol :) 

#include <iostream>
#include <ctime>

using namespace std;

// funkce pro alokaci matice o velikosti N
float** alokujMatici(int velikostN)
{
    float** matice = new float*[velikostN];
    for (int i = 0; i < velikostN; i++)
    {
        *(matice + i) = new float[velikostN];
    }
    return matice;
}

// funkce co vyplni obsah matice nahodnymi cisly
void naplnMatici(float** matice, int velikostN)
{
    for (int i = 0; i < velikostN; i++)
    {
        for (int j = 0; j < velikostN; j++)
        {
            *(*(matice + i) + j) = rand() / (float(5000) + 1);
        }
    }
}

// funkce co secte 2 matice
float** sectiMatice(float** maticeA, float** maticeB, int velikostN)
{
    float** novaMatice = alokujMatici(velikostN);

    for (int i = 0; i < velikostN; i++)
    {
        for (int j = 0; j < velikostN; j++)
        {
            *(*(novaMatice + i) + j) = *(*(maticeA + i) + j) + *(*(maticeB + i) + j);
        }
    }
    return novaMatice;
}

// funkce co vypise matici
void vypisMatici(float** matice, int velikostN)
{
    for (int i = 0; i < velikostN; i++)
    {
        for (int j = 0; j < velikostN; j++)
        {
            cout << *(*(matice + i) + j) << "   ";
        }
        cout << endl;
    }
}

int main()
{
    // hodnota v rand() se bude generovat dle casu
    srand((unsigned int)time(0));

    int N = 4; // hodnost matice

    // prvni matice
    float** maticeA = alokujMatici(N);
    naplnMatici(maticeA, N);

    // druha matice
    float** maticeB = alokujMatici(N);
    naplnMatici(maticeB, N);

    // treti matice, kde je soucet matic A a B
    float** maticeC = sectiMatice(maticeA, maticeB, N);

    // vypis vysledne matice
    vypisMatici(maticeC, N);

    cin.get();
    return 0;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Lenka
~ Anonymní uživatel
31 příspěvků
24. 3. 2012   #10
-
0
-

Ju, dekuji vam vsem moc a moc :)

Nahlásit jako SPAM
IP: 217.117.216.–
Lenka
~ Anonymní uživatel
31 příspěvků
24. 3. 2012   #11
-
0
-

Akorat funguji trosk jinak nez maji ale s tim si uz snad poradim. Nu  a podledni mi vypise jen nejaka cisla a konzole se mi vypne :(

Prvni je super, druhy tam to pocita i casku a tecku jako pismeno ve slove a mezery jako slova ale to nevadi asi. A posledni se mi vypisou ty cisla a vypne se to nevite co s tim?

Nahlásit jako SPAM
IP: 217.117.216.–
Lenka
~ Anonymní uživatel
31 příspěvků
24. 3. 2012   #12
-
0
-

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
//nacteni zakladnich knihoven

int main(void) {

   int pole[100],cis,i,j,prvek,vel_pole,menu,b,pole2[100];     //deklarace promennych
                
   printf("Zadej velikost pole [1..100]: ");           //vypise text na obrazovku
   scanf("%i",&vel_pole);                            //nacte z klavesnice velikost pole

   printf("\nZadavej prvky pole : \n");                 //cyklus pro vyplneni pole
   for (i=0;i<vel_pole;i++)
     {
       scanf("%d",&prvek);
       pole[i]=prvek;
     }
  
   printf("\nZadane pole \n\n");                        //cyklus pro vypsani zadaneho pole
   for (i=0;i<vel_pole;i++)
     printf("%4d  |",pole[i]);
      
   printf("\n\nMenu pro vyber operace razeni cisel \n\nRazeni cisel VZESTUPNE - stiskni 1 \nRazeni cisel SESTUPNE - stiskni 2");            //textove menu pro vyber operace
   printf("\n Vyber operaci: ");
   scanf("%d",&menu); }

   //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

   if (menu==1) {               // pokracuje pokud operace je "vzestupne"
  
    b = 100;                                                            // nastaveni max hodnoty
   for (int i = 0; i < vel_pole; i++) {             // czklus pro zjisteni nejnizsi hodnoty
  
    if ( b > pole[i] ) {
  
     b = pole[i]; }}
  
   pole2[0] = b;               // nastaveni nejnizsi hodnotz do pomocnyho pole
  
   for (int j = 1; j < vel_pole; j++) {          // cyklus pro vlozeni postupn2 nejnizsich cisel
  
    b = 100;
  
    for (int i = 0; i < vel_pole; i++) {
  
     if ( (b > pole[i])&&(pole[i] > pole2[j-1]) ) {     // podminka pro urceni nejnizsiho a zaroven vyssiho jak predchoziho cisla
  
      b = pole[i]; }}
  
    pole2[j] = b; }}
 
   else {                 // pokracuje pokud operace je "sestupne"
  
    b = 0;
   for (int i = 0; i < vel_pole; i++) {
  
    if ( b < pole[i] ) {
  
     b = pole[i]; }}
 
   pole2[0] = b;
  
   for (int j = 1; j < vel_pole; j++) {
 
    b = 0;
  
    for (int i = 0; i < vel_pole; i++) {
  
     if ( (b < pole[i])&&(pole[i] < pole2[j-1]) ) {
  
      b = pole[i]; }}
  
    pole2[j] = b; }}

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

   printf("\nSerazena cisla : ");           // cyklus pro vypis srovnane matice
   for (int i = 0; i < vel_pole; i++) {
   printf(" %4i  |",pole2[i]); }

//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

   getch();               //ceka na stisk klavesy
   return 0;              //vraci vystup programu 0

}

todle jsem udelala ja tak ja nevim nu...

Nahlásit jako SPAM
IP: 217.117.216.–
Lenka
~ Anonymní uživatel
31 příspěvků
26. 3. 2012   #13
-
0
-

Ahojky, tak co jak pak to vidíte?:)

Nahlásit jako SPAM
IP: 77.48.70.–
KIIV+42
God of flame
26. 3. 2012   #14
-
0
-

to ze se zavira konzole neni problem.. obzvlaste pokud to bude nekdo testovat automaticky... teprve pak je to problem...

resi se to tak, ze se terminal otevre a pousti se to v nem, pak to nezmizi protoze se zavre program ale ne terminal :D

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 66 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý