Matice součet - pomoc – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Matice součet - pomoc – C / C++ – Fórum – Programujte.comMatice součet - pomoc – C / C++ – Fórum – Programujte.com

 

Petr
~ Anonymní uživatel
746 příspěvků
3. 4. 2012   #1
-
0
-

Ahoj nevíte někdo jak to rozchodit?

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

int main(){

int i,j,m,n,a,b,c;

printf("Zadejte pocet radku matice: ");
scanf("%d",&m);

printf("Zadejte pocet sloupcu matice: ");
scanf("%d",&n);

int a[5][5];
int b[5][5];
int c[5][5];

for(int i=0;i<m;++i) // Cyklus i s definici parametru cyklu i

for(int j=0;j<n;++j) // Cyklus j s definici parametru cyklu j
  
scanf("%d ",&a[i][j]); // Cteni prvku matice A;

for(i=0;i<m;++i)
 
for(j=0;j<n;++j)
  
scanf("%d ",&b[i][j]); // Cteni prvku matice B

for(i=0;i<m;++i)
 
for(j=0;j<n;++j)

    c[i][j]=a[i][j]+b[i][j]; // Vypocet souctu (matice C)

printf("Tisk souctu matic: C = A  + B\n\nMatice A:"
            "\n=========\n");

for(i=0;i<m;++i) // Tisk matice A
{
 
printf("\n");
 
for(j=0;j<n;++j)
  
printf("%d ",a[i][j]);
}// Konec Tisku matice A
 
printf("\n\nMatice B:\n=========\n");

for(i=0;i<m;++i) // Tisk matice B
{
  printf("\n");
 
  for(j=0;j<n;++j)
 
  printf("%d ",b[i][j]);
} // Konec tisku matice B

  printf("\n\nMatice C:\n=========\n");

  for(i=0;i<m;++i) // Tisk matice C
{
 
  printf("\n");
 
  for(j=0;j<n;++j)
 
  printf("%d ",c[i][j]);

getch();
return(0);
}

Nahlásit jako SPAM
IP: 217.117.216.–
KIIV
~ Moderátor
+43
God of flame
3. 4. 2012   #2
-
0
-

minimalne chybi ukonceni }  pred getch(); return(0);

#include <stdio.h>

int main() {
  int i,j,m,n;

  printf("Zadejte pocet radku matice: ");
  scanf("%d",&m);

  printf("Zadejte pocet sloupcu matice: ");
  scanf("%d",&n);

  int a[5][5];
  int b[5][5];
  int c[5][5];

  for(i=0;i<m;++i) // Cyklus i s definici parametru cyklu i
    for(j=0;j<n;++j) // Cyklus j s definici parametru cyklu j
      scanf("%d ",&a[i][j]); // Cteni prvku matice A;

  for(i=0;i<m;++i)
    for(j=0;j<n;++j)
      scanf("%d ",&b[i][j]); // Cteni prvku matice B

  for(i=0;i<m;++i)
    for(j=0;j<n;++j)
      c[i][j]=a[i][j]+b[i][j]; // Vypocet souctu (matice C)

  printf("Tisk souctu matic: C = A  + B\n\nMatice A:"
            "\n=========\n");

  for(i=0;i<m;++i) // Tisk matice A
  {
    printf("\n");
    for(j=0;j<n;++j) 
      printf("%d ",a[i][j]);
  }// Konec Tisku matice A
 
  printf("\n\nMatice B:\n=========\n");

  for(i=0;i<m;++i) // Tisk matice B
  {
    printf("\n");
    for(j=0;j<n;++j)
      printf("%d ",b[i][j]);
  } // Konec tisku matice B

  printf("\n\nMatice C:\n=========\n");

  for(i=0;i<m;++i) // Tisk matice C
  {
    printf("\n");
 
    for(j=0;j<n;++j)
      printf("%d ",c[i][j]);

  }

  return(0);
}
Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Petr
~ Anonymní uživatel
746 příspěvků
4. 4. 2012   #3
-
0
-

Díky za pomoc, už mi to funguje, ale jeste je tu jeden problém s kterým si nevím rady. Když se tam zadavaji prvy do matic tak se zadává vždy o jeden na víc a celý výledek se mi posune a nevychází:( nevítě někdo kde by mohla být chyba?

Zdroják : 

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

int main() {
  int i,j,m,n;

  printf("Zadejte pocet radku matice: ");
  scanf("%d",&m);

  printf("Zadejte pocet sloupcu matice: ");
  scanf("%d",&n);

  int a[5][5];
  int b[5][5];
  int c[5][5];

  printf("\nZadejte prvky do matice A:\n");
  for(i=0;i<m;i++) // Cyklus i s definici parametru cyklu i
    for(j=0;j<n;j++) // Cyklus j s definici parametru cyklu j
       scanf("%d ",&a[i][j]); // Cteni prvku matice A;

  printf("\nZadejte prvky do matice B:\n");
  for(i=0;i<m;i++)
    for(j=0;j<n;j++)
      scanf("%d ",&b[i][j]); // Cteni prvku matice B

  for(i=0;i<m;i++)
    for(j=0;j<n;j++)
      c[i][j]=a[i][j]+b[i][j]; // Vypocet souctu (matice C)

 
  printf("\n\nMatice A:\n---------\n");

  for(i=0;i<m;++i) // Tisk matice A
  {
    printf("\n");
    for(j=0;j<n;j++) 
      printf("%d ",a[i][j]);
  }// Konec Tisku matice A
 
  printf("\n\nMatice B:\n---------\n");

  for(i=0;i<m;i++) // Tisk matice B
  {
    printf("\n");
    for(j=0;j<n;j++)
      printf("%d ",b[i][j]);
  } // Konec tisku matice B

  printf("\n\nSectene matice:\n---------------\n");

  for(i=0;i<m;i++) // Tisk matice C
  {
    printf("\n");
 
    for(j=0;j<n;j++)
      printf("%d ",c[i][j]);

  }

  getch();
  return(0);
}
Nahlásit jako SPAM
IP: 217.117.216.–
Petr
~ Anonymní uživatel
746 příspěvků
4. 4. 2012   #4
-
0
-

   

Nahlásit jako SPAM
IP: 217.117.216.–
vitamin+8
Grafoman
4. 4. 2012   #5
-
0
-

#4 Petr
v scanf za %d zrus medzeru.

Nahlásit jako SPAM
IP: 178.143.60.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Petr
~ Anonymní uživatel
746 příspěvků
4. 4. 2012   #6
-
0
-

Super díky moc, taková prkotina to by mě nenapadlo... :D

Nahlásit jako SPAM
IP: 217.117.216.–
Petr
~ Anonymní uživatel
746 příspěvků
4. 4. 2012   #7
-
0
-

Ještě jeden dotaz.

Šlo by udělat, aby prvky v matici mohli být reálná čísla?

Nahlásit jako SPAM
IP: 217.117.216.–
vitamin+8
Grafoman
4. 4. 2012   #8
-
0
-

ano, miesto int pouzies float (pripadne double) a v scanf a printf pouzies %f pre float a %lf pre double

Nahlásit jako SPAM
IP: 178.143.60.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Petr
~ Anonymní uživatel
746 příspěvků
4. 4. 2012   #9
-
0
-

Ted to zkousim, ale vsechna i se mi podtrhla a pise to nejakou chybu...

Nahlásit jako SPAM
IP: 217.117.216.–
vitamin+8
Grafoman
4. 4. 2012   #10
-
0
-

Na tu chybu prides aj sam:

double d[5];		//pole 5 realnych premennych

d[3.14] = 4.2;		//ktorej premennej v 5-prvkovom poli sa ma priradit 4.2?
Nahlásit jako SPAM
IP: 178.143.60.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Petr
~ Anonymní uživatel
746 příspěvků
4. 4. 2012   #11
-
0
-

Nejak to nechapu s c++ teprve zacinam kvuli skole... takze se v tom tolik nevyznam :D

Nahlásit jako SPAM
IP: 217.117.216.–
vitamin+8
Grafoman
4. 4. 2012   #12
-
0
-

Nenapisal som zem mas zmenit vsetky int na float/double.

V c/c++ je velky rozdiel medzi celociselnymi  a realnymi premennymi.

Predstav si ze mas v kosiku 5  jablk. Potom vyber z kosiku 3.14-te jablko :)

Nahlásit jako SPAM
IP: 178.143.60.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Petr
~ Anonymní uživatel
746 příspěvků
4. 4. 2012   #13
-
0
-

Jj to chapu, ale neni mi jasne jak to zapsat. S tim jsem pocital ze to bude problem takze zmenit jen u specifikace pole?

Nahlásit jako SPAM
IP: 217.117.216.–
ingiraxo+15
Grafoman
5. 4. 2012   #14
-
0
-

#13 Petr
Prostě když vytváříš pole, tak jednoduše mu nastav typ float (pokud potřebuješ přesnější/větší hodnoty tak double), protože tyto 2 typy slouží pro uložení reálných čísel...

float pole[100]; // statické pole float o 100 prvcích (0-99)

// to samé, jen dynamicky (alokace), potom je nutné jí uvolnit
float* pole = new float[100];

Potom prvky můžeš přidat (ručně) jako: 

// na jaký index se má přidat (nebo přepsat) prvek
// index máš dle velikosti pole, pokud más 100, tak 0-99
int i = 0;

pole[i] = 23.0; // první možnost, kde přidáš .0 (vytvoří řeálný číslo)

// tohle si teď nejsem jistý, ale mělo by fungovat taky, pokud ne, tak musíš
// přidat opět .0, čili 23.0f
pole[i] = 23f;

pole[i] = (float)23; // explicitně přetypuje int na float

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

// zapisovat prvky do pole můžeš přes ukazatel, je to pro app o něco rychlější
// kde jen upravíš
pole[i] = 23.0;
// na
*(pole + i) = 23.0;

A to přidávání prvků pomocí scanf tu už bylo, to psát nebudu, tam jen změníš formát na %f (float) nebo
%lf (double)

A ještě takovej detail, u scanf nemá být reference, pokud vkládáš prvek přímo do pole, protože pole jako takový je reference


Nahlásit jako SPAM
IP: 46.183.64.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
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, 93 hostů

Moderátoři diskuze

 

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