tablica dwuwymiarowa

edek86
Użytkownik
Użytkownik
Posty: 38
Rejestracja: 14 paź 2008, o 14:58
Płeć: Mężczyzna
Lokalizacja: Ruda Śl.
Podziękował: 1 raz

tablica dwuwymiarowa

Post autor: edek86 »

Witam,

Może mi ktoś powiedzieć jak zrobić tablicę dwuwymiarową taką że pierwszy wiersz to będą liczby 1,2,3,4,5 a drugi wiersz to losowo wybrane pięć liczb z zakresu od 0 do 120.
Później z drugiego wiersza wybrać liczbę najmniejszą i największą i podać ich indexy.

Ma to wygladać tak:

1 2 3 4 5
12 14 55 66 110

najmniejsza liczba to: 12 znajduje sie ona na pozycji 1
najwieksza liczba to: 110 znajduje sie ona na pozycji 5

Napisałem taki kod

Kod: Zaznacz cały

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

int main()
{
    int tab[2][5]={1,2,3,4,5};
    int a,b,c, liczba1, liczba2;
    srand(time(0));

    for(a=0;a<2;a++)
                    for(b=0;b<5;b++) tab[a][b]=rand()%120;
                    
                    for(a=0;a<2;a++)
                    { 
                    for(b=0;b<5;b++)
                    printf(" %d ",tab[a][b]);
                    printf("
");
                    } 
    liczba1=tab[0][0];
    liczba2=tab[0][0];                 
    for(a=1;a<2;a++)
    { 
    for(b=0;b<5;b++) {
    if (tab[a][b]<liczba1) liczba1=tab[a][b];
    
    if (tab[a][b]>liczba2) liczba2=tab[a][b];
    }
    }
   

   printf("najmniejsza liczba to %d 
",liczba1);
   printf("najwieksza liczba to %d 
",liczba2);
                    
                    
  system("pause");
  return 0;
}
niestety w tym kodzie liczby w pierwszym wierszu również są losowe, jak przypisać do pierwszego wiersza liczby 1,2,3,4,5? i jak zrobić te indexy?

z góry dzięki za pomoc
exother
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 28 wrz 2009, o 15:01
Płeć: Mężczyzna
Podziękował: 3 razy
Pomógł: 9 razy

tablica dwuwymiarowa

Post autor: exother »

Ja bym to załatwił w najprostszy chyba sposób:

Kod: Zaznacz cały

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

using namespace std;

int main()
{
int i,tab[5],max=1,min=1;
srand ( time(NULL) );
for(i=1;i<=5;++i){
tab[i]=rand() % 120;
}
for(i=2;i<=5;++i){
if(tab[i]>tab[max]){
max=i;
}
if(tab[i]<tab[min]){
min=i;
}
}
cout<<"Najwieksza liczba to: "<<tab[max]<<", znajduje sie na pozycji: "<<max<<endl;
cout<<"Najmniejsza liczba to: "<<tab[min]<<", znajduje sie na pozycji: "<<min<<endl;
return(0);
}
edek86
Użytkownik
Użytkownik
Posty: 38
Rejestracja: 14 paź 2008, o 14:58
Płeć: Mężczyzna
Lokalizacja: Ruda Śl.
Podziękował: 1 raz

tablica dwuwymiarowa

Post autor: edek86 »

exother niestety muszę mieć tablicę dwuwymiarową i musi być to wyświetlone tak jak napisałem:
1 2 3 4 5
12 14 55 66 110
Miodas
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 3 lut 2010, o 20:48
Płeć: Mężczyzna
Lokalizacja: Olsztyn
Pomógł: 1 raz

tablica dwuwymiarowa

Post autor: Miodas »

Inicjujesz tablicę dwuwymiarową int tab[x][y] poźniej w pętli robisz przypisanie do pętli

for (i=1;i=5;i++)
{
tab[1]=i;
}

to jest przypisanie elementów 1 2 3 4 5.

A później tak jak kolega napisał.
edek86
Użytkownik
Użytkownik
Posty: 38
Rejestracja: 14 paź 2008, o 14:58
Płeć: Mężczyzna
Lokalizacja: Ruda Śl.
Podziękował: 1 raz

tablica dwuwymiarowa

Post autor: edek86 »

Chodziło mi o coś takiego
Jak możesz to spójrz jeszcze na ten kod czy nie ma tam jakiś zbędnych rzeczy.

Kod: Zaznacz cały

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

int main()
{
  int tab[2][5], i,b, min, max;
  srand(time(0));
  
  for(i=1;i<=5;i++)

tab[i][1]=i;

 for(i=1;i<=5;i++)
 printf(" % d	 ",tab[i][1]);
 printf("
");
 
 for(i=1;i<2;i++)
                    for(b=0;b<5;b++) tab[i][b]=rand()%120;
 for (i=1; i<2; i++)
            {
            for (b=0; b<5; b++)       printf(" %d	 ", tab[i][b]);
             printf("
");
            }
            
 printf("
");
            
 min=tab[0][0];
 max=tab[0][0];
 
 for(i=1;i<2;i++){
  for(b=0;b<5;b++) {
  if (tab[i][b]<min) min=tab[i][b]; 
  if (tab[i][b]>max) max=tab[i][b];
}
}
  
  printf("minimalna waga %d ",min);
  printf("maxymalna waga %d ",max);
 

    
    system("pause");
    return 0;
}
niestety coś mi nie działa wyświetlanie wartości maxymalnej-- 5 lutego 2010, 19:04 --działa mi teraz min i max, ale znów nie wiem jak do tego zrobić indeksy.
Mógłby ktoś pomóc?
Z góry dziękuję za wszelką pomoc.

Kod: Zaznacz cały

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

int main()
{
  int tab[2][5], i,b, min, max, indexmin, indexmax, a;
  srand(time(0));
  
  for(i=1;i<=5;i++)

tab[i][1]=i;

 for(i=1;i<=5;i++)
 printf(" % d	 ",tab[i][1]);
 printf("
");
 
 for(i=1;i<2;i++)
                    for(b=0;b<5;b++) tab[i][b]=rand()%120;
 for (i=1; i<2; i++)
            {
            for (b=0; b<5; b++)       printf(" %d	 ", tab[i][b]);
             printf("
");
            }
            
 printf("
");
            
     max=tab[1][0];
     min=tab[0][0];
     indexmin=tab[0][0];
                      
    for(i=1;i<2;i++)
    { 
    for(b=0;b<5;b++) {
    if (tab[i][b]>max) max=tab[i][b];
    indexmin=i;
    
    if (tab[i][b]<min) min=tab[i][b];
    indexmax=i;
    }
    }
  
  printf("minimalna waga %d i znajduje sie na pozycji %d ",min,indexmin);
  printf("maxymalna waga %d i znajduje sie na pozycji %d ",max,indexmax);
 
 printf("
");
    
    system("pause");
    return 0;
}
Awatar użytkownika
rozkminiacz
Użytkownik
Użytkownik
Posty: 465
Rejestracja: 24 wrz 2008, o 20:12
Płeć: Mężczyzna
Lokalizacja: Krk
Podziękował: 65 razy
Pomógł: 36 razy

tablica dwuwymiarowa

Post autor: rozkminiacz »

mega to pokomplikowales ziomek poprostu zapiesujesz licznik z fora dla wartosci maxymalnej do zmiennej pomocniczej a po petli wyswietlasz.
exother
Użytkownik
Użytkownik
Posty: 97
Rejestracja: 28 wrz 2009, o 15:01
Płeć: Mężczyzna
Podziękował: 3 razy
Pomógł: 9 razy

tablica dwuwymiarowa

Post autor: exother »

Poza tym jaki sens ma używanie tablicy dwuwymiarowej, skoro pierwszego elementu nie wykorzystujesz, masz tablicę jednowymiarową tab[n] zapisaną jako tab[1][n], hm?

Jeśli tak miało być, to:

Kod: Zaznacz cały

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

using namespace std;

int main()
{
int i,j,tab[1][5],max=1,maxl,minl,min=1;
srand ( time(NULL) );
for(j=1;j<2;++j){
for(i=1;i<=5;++i){
tab[j][i]=rand() % 120;
}
}
for(j=1;j<2;++j){
for(i=2;i<=5;++i){
if(tab[j][i]>=tab[j][max]){
max=i;
maxl=tab[j][i];
}
if(tab[j][i]<=tab[j][min]){
min=i;
minl=tab[j][i];
}
}
}
cout<<"Najwieksza liczba to: "<<maxl<<", znajduje sie na pozycji: "<<max<<endl;
cout<<"Najmniejsza liczba to: "<<minl<<", znajduje sie na pozycji: "<<min<<endl;
return(0);
}
ODPOWIEDZ